Saxum/extern/acgl/include/ACGL/OpenGL/HiLevelObjects/Viewport.hh
2014-10-20 17:31:26 +02:00

98 lines
3.3 KiB
C++

/***********************************************************************
* Copyright 2011-2012 Computer Graphics Group RWTH Aachen University. *
* All rights reserved. *
* Distributed under the terms of the MIT License (see LICENSE.TXT). *
**********************************************************************/
#ifndef ACGL_OPENGL_OBJECTS_VIEWPORT_HH
#define ACGL_OPENGL_OBJECTS_VIEWPORT_HH
#include <vector>
#include <string>
#include <iostream>
#include <ACGL/ACGL.hh>
#include <ACGL/Base/Macros.hh>
#include <ACGL/OpenGL/GL.hh>
namespace ACGL{
namespace OpenGL{
class Viewport
{
ACGL_NOT_COPYABLE(Viewport)
// ========================================================================================================= \/
// ============================================================================================ CONSTRUCTORS \/
// ========================================================================================================= \/
public:
Viewport(GLint _offsetX = 0,
GLint _offsetY = 0,
GLsizei _width = 0,
GLsizei _height = 0)
: mOffsetX(_offsetX),
mOffsetY(_offsetY),
mWidth(_width),
mHeight(_height)
{ }
virtual ~Viewport(void) { }
// ==================================================================================================== \/
// ============================================================================================ GETTERS \/
// ==================================================================================================== \/
public:
inline GLint getOffsetX (void) const { return mOffsetX; }
inline GLint getOffsetY (void) const { return mOffsetY; }
inline GLsizei getWidth (void) const { return mWidth; }
inline GLsizei getHeight (void) const { return mHeight; }
// ==================================================================================================== \/
// ============================================================================================ METHODS \/
// ==================================================================================================== \/
public:
inline void use (void) const
{
glViewport(mOffsetX, mOffsetY, mWidth, mHeight);
}
inline void setOffset (GLint _offsetX, GLint _offsetY)
{
mOffsetX = _offsetX;
mOffsetY = _offsetY;
}
inline void setSize (GLsizei _width, GLsizei _height)
{
mWidth = _width;
mHeight = _height;
}
//! gets the current viewport form OpenGL
void setFromGLContext()
{
GLint viewport[4];
glGetIntegerv( GL_VIEWPORT, &(viewport[0]) );
setOffset(viewport[0], viewport[1]);
setSize( viewport[2], viewport[3]);
}
// =================================================================================================== \/
// ============================================================================================ FIELDS \/
// =================================================================================================== \/
protected:
GLint mOffsetX;
GLint mOffsetY;
GLsizei mWidth;
GLsizei mHeight;
};
ACGL_SMARTPOINTER_TYPEDEFS(Viewport)
} // OpenGL
} // ACGL
#endif // ACGL_OPENGL_OBJECTS_STATE_HH