aboutsummaryrefslogtreecommitdiff
path: root/dep/g3dlite/include/G3D/SplineExtrapolationMode.h
diff options
context:
space:
mode:
Diffstat (limited to 'dep/g3dlite/include/G3D/SplineExtrapolationMode.h')
-rw-r--r--dep/g3dlite/include/G3D/SplineExtrapolationMode.h94
1 files changed, 94 insertions, 0 deletions
diff --git a/dep/g3dlite/include/G3D/SplineExtrapolationMode.h b/dep/g3dlite/include/G3D/SplineExtrapolationMode.h
new file mode 100644
index 00000000000..b5cdc6fb81c
--- /dev/null
+++ b/dep/g3dlite/include/G3D/SplineExtrapolationMode.h
@@ -0,0 +1,94 @@
+/**
+ \file G3D/SplineExtrapolationMode.h
+
+ \maintainer Michael Mara, http://graphics.cs.williams.edu
+
+ \created 2013-01-24
+ \edited 2013-01-24
+
+ Copyright 2000-2013, Morgan McGuire.
+ All rights reserved.
+ */
+
+#ifndef G3D_SplineExtrapolationMode_h
+#define G3D_SplineExtrapolationMode_h
+
+#include "G3D/platform.h"
+#include "G3D/enumclass.h"
+
+
+namespace G3D {
+
+/**
+ Describes the behavior of G3D::Spline, etc. when accessing a time outside of the control point range.
+
+ Refer to these as scoped enums, e.g., <code>SplineExtrapolationMode m = SplineExtrapolationMode::CLAMP;</code>.
+
+ Uses the "Intelligent Enum" design pattern
+ http://www.codeguru.com/cpp/cpp/cpp_mfc/article.php/c4001/
+ */
+class SplineExtrapolationMode {
+public:
+ /** Don't use this enum; use SplineExtrapolationMode instances instead. */
+ enum Value {
+ CYCLIC,
+ LINEAR,
+ CLAMP
+ };
+ Value value;
+private:
+
+ static const char* toString(int i, Value& v) {
+ static const char* str[] = {"CYCLIC", "LINEAR", "CLAMP", NULL};
+ static const Value val[] = {CYCLIC, LINEAR, CLAMP};
+ const char* s = str[i];
+ if (s) {
+ v = val[i];
+ }
+ return s;
+ }
+
+public:
+
+ G3D_DECLARE_ENUM_CLASS_METHODS(SplineExtrapolationMode);
+};
+
+
+
+
+/**
+ Describes the behavior of G3D::Spline
+ */
+class SplineInterpolationMode {
+public:
+ /** Don't use this enum; use SplineExtrapolationMode instances instead. */
+ enum Value {
+ LINEAR,
+ CUBIC
+ };
+ Value value;
+private:
+
+ static const char* toString(int i, Value& v) {
+ static const char* str[] = {"LINEAR", "CUBIC", NULL};
+ static const Value val[] = {LINEAR, CUBIC};
+ const char* s = str[i];
+ if (s) {
+ v = val[i];
+ }
+ return s;
+ }
+
+public:
+
+ G3D_DECLARE_ENUM_CLASS_METHODS(SplineInterpolationMode);
+
+};
+
+
+} // namespace G3D
+
+G3D_DECLARE_ENUM_CLASS_HASHCODE(G3D::SplineExtrapolationMode);
+G3D_DECLARE_ENUM_CLASS_HASHCODE(G3D::SplineInterpolationMode);
+
+#endif