Browse Source

Camera: stronly typed AspectRatioPolicy enum.

pull/279/head
Vladimír Vondruš 14 years ago
parent
commit
5381d9e423
  1. 6
      src/Camera.cpp
  2. 8
      src/Camera.h

6
src/Camera.cpp

@ -20,7 +20,7 @@ using namespace std;
namespace Magnum { namespace Magnum {
Camera::Camera(Object* parent): Object(parent), _aspectRatioPolicy(Extend) {} Camera::Camera(Object* parent): Object(parent), _aspectRatioPolicy(AspectRatioPolicy::Extend) {}
void Camera::setOrthographic(GLfloat size, GLfloat near, GLfloat far) { void Camera::setOrthographic(GLfloat size, GLfloat near, GLfloat far) {
_near = near; _near = near;
@ -83,14 +83,14 @@ void Camera::fixAspectRatio() {
} }
/* Extend on larger side = scale larger side down */ /* Extend on larger side = scale larger side down */
if(_aspectRatioPolicy == Extend) { if(_aspectRatioPolicy == AspectRatioPolicy::Extend) {
_projectionMatrix = ((_viewport.x() > _viewport.y()) ? _projectionMatrix = ((_viewport.x() > _viewport.y()) ?
Matrix4::scaling({GLfloat(_viewport.y())/_viewport.x(), 1, 1}) : Matrix4::scaling({GLfloat(_viewport.y())/_viewport.x(), 1, 1}) :
Matrix4::scaling({1, GLfloat(_viewport.x())/_viewport.y(), 1}) Matrix4::scaling({1, GLfloat(_viewport.x())/_viewport.y(), 1})
)*rawProjectionMatrix; )*rawProjectionMatrix;
/* Clip on smaller side = scale smaller side up */ /* Clip on smaller side = scale smaller side up */
} else if(_aspectRatioPolicy == Clip) { } else if(_aspectRatioPolicy == AspectRatioPolicy::Clip) {
_projectionMatrix = ((_viewport.x() > _viewport.y()) ? _projectionMatrix = ((_viewport.x() > _viewport.y()) ?
Matrix4::scaling({1, GLfloat(_viewport.x())/_viewport.y(), 1}) : Matrix4::scaling({1, GLfloat(_viewport.x())/_viewport.y(), 1}) :
Matrix4::scaling({GLfloat(_viewport.y())/_viewport.x(), 1, 1}) Matrix4::scaling({GLfloat(_viewport.y())/_viewport.x(), 1, 1})

8
src/Camera.h

@ -41,10 +41,10 @@ class MAGNUM_EXPORT Camera: public Object {
}; };
/** @brief Aspect ratio policy */ /** @brief Aspect ratio policy */
enum AspectRatioPolicy { enum class AspectRatioPolicy {
NotPreserved, /**< @brief Don't preserve aspect ratio */ NotPreserved, /**< Don't preserve aspect ratio */
Extend, /**< @brief Extend on larger side of view */ Extend, /**< Extend on larger side of view */
Clip /**< @brief Clip on smaller side of view */ Clip /**< Clip on smaller side of view */
}; };
/** @brief Set feature */ /** @brief Set feature */

Loading…
Cancel
Save