Context now uses a Rectangle struct for storing viewport.

TRAC #22116

Signed-off-by: Shannon Woods
Signed-off-by: Daniel Koch

git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1454 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Context.cpp b/src/libGLESv2/Context.cpp
index 6f78d4a..d5b6b49 100644
--- a/src/libGLESv2/Context.cpp
+++ b/src/libGLESv2/Context.cpp
@@ -106,10 +106,10 @@
 
     mState.lineWidth = 1.0f;
 
-    mState.viewportX = 0;
-    mState.viewportY = 0;
-    mState.viewportWidth = 0;
-    mState.viewportHeight = 0;
+    mState.viewport.x = 0;
+    mState.viewport.y = 0;
+    mState.viewport.width = 0;
+    mState.viewport.height = 0;
     mState.zNear = 0.0f;
     mState.zFar = 1.0f;
 
@@ -304,10 +304,10 @@
         initExtensionString();
         initRendererString();
 
-        mState.viewportX = 0;
-        mState.viewportY = 0;
-        mState.viewportWidth = surface->getWidth();
-        mState.viewportHeight = surface->getHeight();
+        mState.viewport.x = 0;
+        mState.viewport.y = 0;
+        mState.viewport.width = surface->getWidth();
+        mState.viewport.height = surface->getHeight();
 
         mState.scissor.x = 0;
         mState.scissor.y = 0;
@@ -599,10 +599,10 @@
 
 void Context::setViewportParams(GLint x, GLint y, GLsizei width, GLsizei height)
 {
-    mState.viewportX = x;
-    mState.viewportY = y;
-    mState.viewportWidth = width;
-    mState.viewportHeight = height;
+    mState.viewport.x = x;
+    mState.viewport.y = y;
+    mState.viewport.width = width;
+    mState.viewport.height = height;
 }
 
 void Context::setScissorParams(GLint x, GLint y, GLsizei width, GLsizei height)
@@ -1454,10 +1454,10 @@
         }
         break;
       case GL_VIEWPORT:
-        params[0] = mState.viewportX;
-        params[1] = mState.viewportY;
-        params[2] = mState.viewportWidth;
-        params[3] = mState.viewportHeight;
+        params[0] = mState.viewport.x;
+        params[1] = mState.viewport.y;
+        params[2] = mState.viewport.width;
+        params[3] = mState.viewport.height;
         break;
       case GL_SCISSOR_BOX:
         params[0] = mState.scissor.x;
@@ -1842,12 +1842,10 @@
     }
     else
     {
-        viewport.X = clamp(mState.viewportX, 0L, static_cast<LONG>(mRenderTargetDesc.width));
-        viewport.Y = clamp(mState.viewportY, 0L, static_cast<LONG>(mRenderTargetDesc.height));
-        viewport.Width = clamp(mState.viewportWidth, 0L, static_cast<LONG>(mRenderTargetDesc.width) - static_cast<LONG>(viewport.X));
-        viewport.Height = clamp(mState.viewportHeight, 0L, static_cast<LONG>(mRenderTargetDesc.height) - static_cast<LONG>(viewport.Y));
-        viewport.MinZ = zNear;
-        viewport.MaxZ = zFar;
+        viewport.X = clamp(mState.viewport.x, 0L, static_cast<LONG>(mRenderTargetDesc.width));
+        viewport.Y = clamp(mState.viewport.y, 0L, static_cast<LONG>(mRenderTargetDesc.height));
+        viewport.Width = clamp(mState.viewport.width, 0L, static_cast<LONG>(mRenderTargetDesc.width) - static_cast<LONG>(viewport.X));
+        viewport.Height = clamp(mState.viewport.height, 0L, static_cast<LONG>(mRenderTargetDesc.height) - static_cast<LONG>(viewport.Y));
     }
 
     if (viewport.Width <= 0 || viewport.Height <= 0)
@@ -1876,9 +1874,9 @@
 
         // These values are used for computing gl_FragCoord in Program::linkVaryings().
         GLint coord = programBinary->getDxCoordLocation();
-        GLfloat whxy[4] = {mState.viewportWidth / 2.0f, mState.viewportHeight / 2.0f, 
-                          (float)mState.viewportX + mState.viewportWidth / 2.0f, 
-                          (float)mState.viewportY + mState.viewportHeight / 2.0f};
+        GLfloat whxy[4] = {mState.viewport.width / 2.0f, mState.viewport.height / 2.0f,
+                          (float)mState.viewport.x + mState.viewport.width / 2.0f,
+                          (float)mState.viewport.y + mState.viewport.height / 2.0f};
         programBinary->setUniform4fv(coord, 1, whxy);
 
         GLint depth = programBinary->getDxDepthLocation();
diff --git a/src/libGLESv2/Context.h b/src/libGLESv2/Context.h
index d9962cf..7945997 100644
--- a/src/libGLESv2/Context.h
+++ b/src/libGLESv2/Context.h
@@ -172,10 +172,7 @@
     GLenum generateMipmapHint;
     GLenum fragmentShaderDerivativeHint;
 
-    GLint viewportX;
-    GLint viewportY;
-    GLsizei viewportWidth;
-    GLsizei viewportHeight;
+    Rectangle viewport;
     float zNear;
     float zFar;