public void RunCase(string test) { var path = test + ".jade"; var str = File.ReadAllText(path, Encoding.UTF8); var html = File.ReadAllText(test + ".html", Encoding.UTF8).Trim(); var fn = Jade.Compile(str, new { Filename = path, Pretty = true }); var actual = fn(new { title = "Jade" }); Assert.That(actual, Is.EqualTo(html)); }
public override void Recompile() { car.Recompile(); idVisualizar = Gl.glGenLists(3); #region Lista 1 Gl.glNewList(idVisualizar, Gl.GL_COMPILE); Gl.glPushMatrix(); // Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT | Gl.GL_STENCIL_BUFFER_BIT); //double[] eqr = {0,-1,0,0}; Gl.glDisable(Gl.GL_CULL_FACE); Gl.glTranslated(start.x, start.y, start.z); Gl.glRotated(90, 1, 0, 0); Material m = new Jade(); Gl.glColor3d(0.2, 0.4, 0.8); m.Set(); Glu.GLUquadric cil; cil = Glu.gluNewQuadric(); Gl.glBindTexture(Gl.GL_TEXTURE_2D, Otros.texture[2]); Glu.gluQuadricOrientation(cil, Glu.GLU_INSIDE); Glu.gluQuadricTexture(cil, Otros.texture[1]); Glu.gluCylinder(cil, rad, rad, rad / 3, 32, 32); Gl.glBindTexture(Gl.GL_TEXTURE_2D, 0); double[] eqr = { 0.0f, -1.0f, 0.0f, 0.0f }; // Plane Equation To Use For The Reflected Objects //Gl.glLoadIdentity(); // Reset The Modelview Matrix //Gl.glTranslatef(0.0f, -0.6f, zoom); // Zoom And Raise Camera Above The Floor (Up 0.6 Units) //Gl.glColorMask(0,0,0,0); // Set Color Mask Gl.glEnable(Gl.GL_STENCIL_TEST); // Enable Stencil Buffer For "marking" The Floor Gl.glStencilFunc(Gl.GL_ALWAYS, 1, 1); // Always Passes, 1 Bit Plane, 1 As Mask Gl.glStencilOp(Gl.GL_KEEP, Gl.GL_KEEP, Gl.GL_REPLACE); // We Set The Stencil Buffer To 1 Where We Draw Any Polygon // Keep If Test Fails, Keep If Test Passes But Buffer Test Fails // Replace If Test Passes Gl.glDisable(Gl.GL_DEPTH_TEST); // Disable Depth Testing DrawFloor(); // Draw The Floor (Draws To The Stencil Buffer) // We Only Want To Mark It In The Stencil Buffer Gl.glEnable(Gl.GL_DEPTH_TEST); // Enable Depth Testing Gl.glColorMask(1, 1, 1, 1); // Set Color Mask to TRUE, TRUE, TRUE, TRUE Gl.glStencilFunc(Gl.GL_EQUAL, 1, 1); // We Draw Only Where The Stencil Is 1 // (I.E. Where The Floor Was Drawn) Gl.glStencilOp(Gl.GL_KEEP, Gl.GL_KEEP, Gl.GL_KEEP); // Don't Change The Stencil Buffer Gl.glEnable(Gl.GL_CLIP_PLANE0); // Enable Clip Plane For Removing Artifacts // (When The Object Crosses The Floor) Gl.glClipPlane(Gl.GL_CLIP_PLANE0, eqr); // Equation For Reflected Objects Gl.glPushMatrix(); // Push The Matrix Onto The Stack Gl.glScalef(1.0f, 1.0f, -1.0f); // Mirror Y Axis Gl.glTranslatef(0.0f, 0.0f, -height); // Position The Object Gl.glEndList(); #endregion Lista1 DrawObject(); // Draw The Sphere (Reflection) #region Lista 2 Gl.glNewList(idVisualizar + 1, Gl.GL_COMPILE); Gl.glPopMatrix(); // Pop The Matrix Off The Stack Gl.glDisable(Gl.GL_CLIP_PLANE0); // Disable Clip Plane For Drawing The Floor Gl.glDisable(Gl.GL_STENCIL_TEST); // We Don't Need The Stencil Buffer Any More (Disable) Gl.glEnable(Gl.GL_BLEND); // Enable Blending (Otherwise The Reflected Object Wont Show) Gl.glColor4f(0f, 0f, 0f, 0.6f); // Set Color To White With 80% Alpha Gl.glBlendFunc(Gl.GL_SRC_ALPHA, Gl.GL_ONE_MINUS_SRC_ALPHA); // Blending Base111d On Source Alpha And 1 Minus Dest Alpha Gl.glRotated(180, 1, 0, 0); DrawFloor(); // Draw The Floor To The Screen Gl.glRotated(180, 1, 0, 0); Gl.glEnable(Gl.GL_LIGHTING); // Enable Lighting Gl.glDisable(Gl.GL_BLEND); // Disable Blending Gl.glTranslatef(0.0f, 0.0f, -height); // Position The Ball At Proper Height Gl.glEndList(); #endregion Lista 2 DrawObject(); // Draw The Ball #region Lista 3 Gl.glNewList(idVisualizar + 2, Gl.GL_COMPILE); m.UnSet(); Gl.glEnable(Gl.GL_CULL_FACE); Gl.glPopMatrix(); Gl.glEndList(); #endregion Lista 3 }
public override void Recompile() { car.Recompile(); idVisualizar=Gl.glGenLists(3); #region Lista 1 Gl.glNewList(idVisualizar,Gl.GL_COMPILE); Gl.glPushMatrix(); // Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT | Gl.GL_STENCIL_BUFFER_BIT); //double[] eqr = {0,-1,0,0}; Gl.glDisable(Gl.GL_CULL_FACE); Gl.glTranslated(start.x,start.y,start.z); Gl.glRotated(90,1,0,0); Material m=new Jade(); Gl.glColor3d(0.2,0.4,0.8); m.Set(); Glu.GLUquadric cil; cil=Glu.gluNewQuadric(); Gl.glBindTexture(Gl.GL_TEXTURE_2D,Otros.texture[2]); Glu.gluQuadricOrientation(cil,Glu.GLU_INSIDE); Glu.gluQuadricTexture(cil,Otros.texture[1]); Glu.gluCylinder(cil,rad,rad,rad/3,32,32); Gl.glBindTexture(Gl.GL_TEXTURE_2D,0); double[] eqr = {0.0f,-1.0f, 0.0f, 0.0f}; // Plane Equation To Use For The Reflected Objects //Gl.glLoadIdentity(); // Reset The Modelview Matrix //Gl.glTranslatef(0.0f, -0.6f, zoom); // Zoom And Raise Camera Above The Floor (Up 0.6 Units) //Gl.glColorMask(0,0,0,0); // Set Color Mask Gl.glEnable(Gl.GL_STENCIL_TEST); // Enable Stencil Buffer For "marking" The Floor Gl.glStencilFunc(Gl.GL_ALWAYS, 1, 1); // Always Passes, 1 Bit Plane, 1 As Mask Gl.glStencilOp(Gl.GL_KEEP, Gl.GL_KEEP, Gl.GL_REPLACE); // We Set The Stencil Buffer To 1 Where We Draw Any Polygon // Keep If Test Fails, Keep If Test Passes But Buffer Test Fails // Replace If Test Passes Gl.glDisable(Gl.GL_DEPTH_TEST); // Disable Depth Testing DrawFloor(); // Draw The Floor (Draws To The Stencil Buffer) // We Only Want To Mark It In The Stencil Buffer Gl.glEnable(Gl.GL_DEPTH_TEST); // Enable Depth Testing Gl.glColorMask(1,1,1,1); // Set Color Mask to TRUE, TRUE, TRUE, TRUE Gl.glStencilFunc(Gl.GL_EQUAL, 1, 1); // We Draw Only Where The Stencil Is 1 // (I.E. Where The Floor Was Drawn) Gl.glStencilOp(Gl.GL_KEEP, Gl.GL_KEEP, Gl.GL_KEEP); // Don't Change The Stencil Buffer Gl.glEnable(Gl.GL_CLIP_PLANE0); // Enable Clip Plane For Removing Artifacts // (When The Object Crosses The Floor) Gl.glClipPlane(Gl.GL_CLIP_PLANE0, eqr); // Equation For Reflected Objects Gl.glPushMatrix(); // Push The Matrix Onto The Stack Gl.glScalef(1.0f, 1.0f, -1.0f); // Mirror Y Axis Gl.glTranslatef(0.0f, 0.0f,-height); // Position The Object Gl.glEndList(); #endregion Lista1 DrawObject(); // Draw The Sphere (Reflection) #region Lista 2 Gl.glNewList(idVisualizar+1,Gl.GL_COMPILE); Gl.glPopMatrix(); // Pop The Matrix Off The Stack Gl.glDisable(Gl.GL_CLIP_PLANE0); // Disable Clip Plane For Drawing The Floor Gl.glDisable(Gl.GL_STENCIL_TEST); // We Don't Need The Stencil Buffer Any More (Disable) Gl.glEnable(Gl.GL_BLEND); // Enable Blending (Otherwise The Reflected Object Wont Show) Gl.glColor4f(0f, 0f, 0f, 0.6f); // Set Color To White With 80% Alpha Gl.glBlendFunc(Gl.GL_SRC_ALPHA, Gl.GL_ONE_MINUS_SRC_ALPHA); // Blending Base111d On Source Alpha And 1 Minus Dest Alpha Gl.glRotated(180,1,0,0); DrawFloor(); // Draw The Floor To The Screen Gl.glRotated(180,1,0,0); Gl.glEnable(Gl.GL_LIGHTING); // Enable Lighting Gl.glDisable(Gl.GL_BLEND); // Disable Blending Gl.glTranslatef(0.0f, 0.0f,-height); // Position The Ball At Proper Height Gl.glEndList(); #endregion Lista 2 DrawObject(); // Draw The Ball #region Lista 3 Gl.glNewList(idVisualizar+2,Gl.GL_COMPILE); m.UnSet(); Gl.glEnable(Gl.GL_CULL_FACE); Gl.glPopMatrix(); Gl.glEndList(); #endregion Lista 3 }