Make GrStencilState a class to enable future optimizations

Review URL: http://codereview.appspot.com/5492047/


git-svn-id: http://skia.googlecode.com/svn/trunk@2881 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/GrGpuGL.cpp b/src/gpu/GrGpuGL.cpp
index f266368..339133fa 100644
--- a/src/gpu/GrGpuGL.cpp
+++ b/src/gpu/GrGpuGL.cpp
@@ -1826,14 +1826,14 @@
             GL_CALL(Enable(GR_GL_STENCIL_TEST));
     #if GR_DEBUG
             if (!this->getCaps().fStencilWrapOpsSupport) {
-                GrAssert(settings->fFrontPassOp != kIncWrap_StencilOp);
-                GrAssert(settings->fFrontPassOp != kDecWrap_StencilOp);
-                GrAssert(settings->fFrontFailOp != kIncWrap_StencilOp);
-                GrAssert(settings->fBackFailOp != kDecWrap_StencilOp);
-                GrAssert(settings->fBackPassOp != kIncWrap_StencilOp);
-                GrAssert(settings->fBackPassOp != kDecWrap_StencilOp);
-                GrAssert(settings->fBackFailOp != kIncWrap_StencilOp);
-                GrAssert(settings->fFrontFailOp != kDecWrap_StencilOp);
+                GrAssert(settings->frontPassOp() != kIncWrap_StencilOp);
+                GrAssert(settings->frontPassOp() != kDecWrap_StencilOp);
+                GrAssert(settings->frontFailOp() != kIncWrap_StencilOp);
+                GrAssert(settings->backFailOp() != kDecWrap_StencilOp);
+                GrAssert(settings->backPassOp() != kIncWrap_StencilOp);
+                GrAssert(settings->backPassOp() != kDecWrap_StencilOp);
+                GrAssert(settings->backFailOp() != kIncWrap_StencilOp);
+                GrAssert(settings->frontFailOp() != kDecWrap_StencilOp);
             }
     #endif
             int stencilBits = 0;
@@ -1843,8 +1843,7 @@
                 stencilBits = stencilBuffer->bits();
             }
             // TODO: dynamically attach a stencil buffer
-            GrAssert(stencilBits ||
-                     (GrStencilSettings::gDisabled == *settings));
+            GrAssert(stencilBits || settings->isDisabled());
 
             GrGLuint clipStencilMask = 0;
             GrGLuint userStencilMask = ~0;
@@ -1853,19 +1852,19 @@
                 userStencilMask = clipStencilMask - 1;
             }
 
-            unsigned int frontRef  = settings->fFrontFuncRef;
-            unsigned int frontMask = settings->fFrontFuncMask;
-            unsigned int frontWriteMask = settings->fFrontWriteMask;
+            unsigned int frontRef  = settings->frontFuncRef();
+            unsigned int frontMask = settings->frontFuncMask();
+            unsigned int frontWriteMask = settings->frontWriteMask();
             GrGLenum frontFunc;
 
             if (drawClipToStencil) {
-                GrAssert(settings->fFrontFunc < kBasicStencilFuncCount);
-                frontFunc = grToGLStencilFunc[settings->fFrontFunc];
+                GrAssert(settings->frontFunc() < kBasicStencilFuncCount);
+                frontFunc = grToGLStencilFunc[settings->frontFunc()];
             } else {
                 frontFunc = grToGLStencilFunc[ConvertStencilFunc(
-                        stencilClip, settings->fFrontFunc)];
+                        stencilClip, settings->frontFunc())];
 
-                ConvertStencilFuncAndMask(settings->fFrontFunc,
+                ConvertStencilFuncAndMask(settings->frontFunc(),
                                           stencilClip,
                                           clipStencilMask,
                                           userStencilMask,
@@ -1874,28 +1873,28 @@
                 frontWriteMask &= userStencilMask;
             }
             GrAssert((size_t)
-                settings->fFrontFailOp < GR_ARRAY_COUNT(grToGLStencilOp));
+                settings->frontFailOp() < GR_ARRAY_COUNT(grToGLStencilOp));
             GrAssert((size_t)
-                settings->fFrontPassOp < GR_ARRAY_COUNT(grToGLStencilOp));
+                settings->frontPassOp() < GR_ARRAY_COUNT(grToGLStencilOp));
             GrAssert((size_t)
-                settings->fBackFailOp < GR_ARRAY_COUNT(grToGLStencilOp));
+                settings->backFailOp() < GR_ARRAY_COUNT(grToGLStencilOp));
             GrAssert((size_t)
-                settings->fBackPassOp < GR_ARRAY_COUNT(grToGLStencilOp));
+                settings->backPassOp() < GR_ARRAY_COUNT(grToGLStencilOp));
             if (this->getCaps().fTwoSidedStencilSupport) {
                 GrGLenum backFunc;
 
-                unsigned int backRef  = settings->fBackFuncRef;
-                unsigned int backMask = settings->fBackFuncMask;
-                unsigned int backWriteMask = settings->fBackWriteMask;
+                unsigned int backRef  = settings->backFuncRef();
+                unsigned int backMask = settings->backFuncMask();
+                unsigned int backWriteMask = settings->backWriteMask();
 
 
                 if (drawClipToStencil) {
-                    GrAssert(settings->fBackFunc < kBasicStencilFuncCount);
-                    backFunc = grToGLStencilFunc[settings->fBackFunc];
+                    GrAssert(settings->backFunc() < kBasicStencilFuncCount);
+                    backFunc = grToGLStencilFunc[settings->backFunc()];
                 } else {
                     backFunc = grToGLStencilFunc[ConvertStencilFunc(
-                        stencilClip, settings->fBackFunc)];
-                    ConvertStencilFuncAndMask(settings->fBackFunc,
+                        stencilClip, settings->backFunc())];
+                    ConvertStencilFuncAndMask(settings->backFunc(),
                                               stencilClip,
                                               clipStencilMask,
                                               userStencilMask,
@@ -1911,20 +1910,20 @@
                                             backRef, backMask));
                 GL_CALL(StencilMaskSeparate(GR_GL_BACK, backWriteMask));
                 GL_CALL(StencilOpSeparate(GR_GL_FRONT,
-                                    grToGLStencilOp[settings->fFrontFailOp],
-                                    grToGLStencilOp[settings->fFrontPassOp],
-                                    grToGLStencilOp[settings->fFrontPassOp]));
+                                    grToGLStencilOp[settings->frontFailOp()],
+                                    grToGLStencilOp[settings->frontPassOp()],
+                                    grToGLStencilOp[settings->frontPassOp()]));
 
                 GL_CALL(StencilOpSeparate(GR_GL_BACK,
-                                    grToGLStencilOp[settings->fBackFailOp],
-                                    grToGLStencilOp[settings->fBackPassOp],
-                                    grToGLStencilOp[settings->fBackPassOp]));
+                                    grToGLStencilOp[settings->backFailOp()],
+                                    grToGLStencilOp[settings->backPassOp()],
+                                    grToGLStencilOp[settings->backPassOp()]));
             } else {
                 GL_CALL(StencilFunc(frontFunc, frontRef, frontMask));
                 GL_CALL(StencilMask(frontWriteMask));
-                GL_CALL(StencilOp(grToGLStencilOp[settings->fFrontFailOp],
-                                grToGLStencilOp[settings->fFrontPassOp],
-                                grToGLStencilOp[settings->fFrontPassOp]));
+                GL_CALL(StencilOp(grToGLStencilOp[settings->frontFailOp()],
+                                grToGLStencilOp[settings->frontPassOp()],
+                                grToGLStencilOp[settings->frontPassOp()]));
             }
         }
         *fHWDrawState.stencil() = *settings;