From 393b5cd1dc438872af89d334ef6e5fcc59f27d47 Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Sun, 13 Jan 2013 17:24:39 +1000 Subject: Added Irrlicht 1.8, but without all the Windows binaries. --- .../source/Irrlicht/CVideoModeList.cpp | 132 +++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 libraries/irrlicht-1.8/source/Irrlicht/CVideoModeList.cpp (limited to 'libraries/irrlicht-1.8/source/Irrlicht/CVideoModeList.cpp') diff --git a/libraries/irrlicht-1.8/source/Irrlicht/CVideoModeList.cpp b/libraries/irrlicht-1.8/source/Irrlicht/CVideoModeList.cpp new file mode 100644 index 0000000..9ae7fb2 --- /dev/null +++ b/libraries/irrlicht-1.8/source/Irrlicht/CVideoModeList.cpp @@ -0,0 +1,132 @@ +// Copyright (C) 2002-2012 Nikolaus Gebhardt +// This file is part of the "Irrlicht Engine". +// For conditions of distribution and use, see copyright notice in irrlicht.h + +#include "CVideoModeList.h" +#include "irrMath.h" + +namespace irr +{ +namespace video +{ + +//! constructor +CVideoModeList::CVideoModeList() +{ + #ifdef _DEBUG + setDebugName("CVideoModeList"); + #endif + + Desktop.depth = 0; + Desktop.size = core::dimension2d(0,0); +} + + +void CVideoModeList::setDesktop(s32 desktopDepth, const core::dimension2d& desktopSize) +{ + Desktop.depth = desktopDepth; + Desktop.size = desktopSize; +} + + +//! Gets amount of video modes in the list. +s32 CVideoModeList::getVideoModeCount() const +{ + return (s32)VideoModes.size(); +} + + +//! Returns the screen size of a video mode in pixels. +core::dimension2d CVideoModeList::getVideoModeResolution(s32 modeNumber) const +{ + if (modeNumber < 0 || modeNumber > (s32)VideoModes.size()) + return core::dimension2d(0,0); + + return VideoModes[modeNumber].size; +} + + +core::dimension2d CVideoModeList::getVideoModeResolution( + const core::dimension2d& minSize, + const core::dimension2d& maxSize) const +{ + u32 best=VideoModes.size(); + // if only one or no mode + if (best<2) + return getVideoModeResolution(0); + + u32 i; + for (i=0; i=minSize.Width && + VideoModes[i].size.Height>=minSize.Height && + VideoModes[i].size.Width<=maxSize.Width && + VideoModes[i].size.Height<=maxSize.Height) + best=i; + } + // we take the last one found, the largest one fitting + if (best (s32)VideoModes.size()) + return 0; + + return VideoModes[modeNumber].depth; +} + + +//! Returns current desktop screen resolution. +const core::dimension2d& CVideoModeList::getDesktopResolution() const +{ + return Desktop.size; +} + + +//! Returns the pixel depth of a video mode in bits. +s32 CVideoModeList::getDesktopDepth() const +{ + return Desktop.depth; +} + + +//! adds a new mode to the list +void CVideoModeList::addMode(const core::dimension2d& size, s32 depth) +{ + SVideoMode m; + m.depth = depth; + m.size = size; + + for (u32 i=0; i