X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fwindingtest.cpp;h=acbc20fc5ba127688c89c95caa0d5207a7c66f24;hb=a533f857e7d319c6eff2b788bbad3a238468c4b2;hp=401d68035af46703e8496b6eaff9e452026b8ae2;hpb=f14435e58bfa0fa697a06ba9a454bb30cd37d9d8;p=libs%2Fgl.git diff --git a/source/windingtest.cpp b/source/windingtest.cpp index 401d6803..acbc20fc 100644 --- a/source/windingtest.cpp +++ b/source/windingtest.cpp @@ -1,3 +1,4 @@ +#include #include "windingtest.h" namespace Msp { @@ -10,7 +11,7 @@ void operator>>(const LexicalConverter &conv, FaceWinding &winding) else if(conv.get()=="COUNTERCLOCKWISE") winding = COUNTERCLOCKWISE; else - throw InvalidParameterValue("Invalid FaceWinding"); + throw lexical_error(format("conversion of '%s' to FaceWinding", conv.get())); } WindingTest::WindingTest(): @@ -43,13 +44,23 @@ void WindingTest::unbind() glDisable(GL_CULL_FACE); } -WindingTest &WindingTest::clockwise() +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; } -WindingTest &WindingTest::counterclockwise() +const WindingTest &WindingTest::counterclockwise() { static WindingTest test(COUNTERCLOCKWISE); return test;