+++ /dev/null
-#include <msp/strings/format.h>
-#include "windingtest.h"
-
-namespace Msp {
-namespace GL {
-
-void operator>>(const LexicalConverter &conv, FaceWinding &winding)
-{
- if(conv.get()=="CLOCKWISE")
- winding = CLOCKWISE;
- else if(conv.get()=="COUNTERCLOCKWISE")
- winding = COUNTERCLOCKWISE;
- else
- throw lexical_error(format("conversion of '%s' to FaceWinding", conv.get()));
-}
-
-WindingTest::WindingTest():
- test(false),
- winding(COUNTERCLOCKWISE)
-{ }
-
-WindingTest::WindingTest(FaceWinding w):
- test(true),
- winding(w)
-{ }
-
-void WindingTest::bind() const
-{
- if(set_current(this))
- {
- if(test)
- {
- glEnable(GL_CULL_FACE);
- glFrontFace(winding);
- }
- else
- glDisable(GL_CULL_FACE);
- }
-}
-
-void WindingTest::unbind()
-{
- if(set_current(0))
- glDisable(GL_CULL_FACE);
-}
-
-const WindingTest &WindingTest::get_reverse() const
-{
- if(!test)
- return *this;
- else if(winding==CLOCKWISE)
- return counterclockwise();
- else
- return clockwise();
-}
-
-const WindingTest &WindingTest::clockwise()
-{
- static WindingTest test(CLOCKWISE);
- return test;
-}
-
-const WindingTest &WindingTest::counterclockwise()
-{
- static WindingTest test(COUNTERCLOCKWISE);
- return test;
-}
-
-} // namespace GL
-} // namespace Msp