Initial commit
This commit is contained in:
85
deps/g3dlite/include/G3D/WrapMode.h
vendored
Normal file
85
deps/g3dlite/include/G3D/WrapMode.h
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
/**
|
||||
\file G3D/WrapMode.h
|
||||
|
||||
\maintainer Morgan McGuire, http://graphics.cs.williams.edu
|
||||
|
||||
\created 2007-04-17
|
||||
\edited 2010-04-17
|
||||
|
||||
Copyright 2000-2012, Morgan McGuire.
|
||||
All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef G3D_WrapMode_h
|
||||
#define G3D_WrapMode_h
|
||||
|
||||
#include "G3D/platform.h"
|
||||
#include "G3D/enumclass.h"
|
||||
|
||||
#ifdef IGNORE
|
||||
# undef IGNORE
|
||||
#endif
|
||||
#ifdef ZERO
|
||||
# undef ZERO
|
||||
#endif
|
||||
#ifdef ERROR
|
||||
# undef ERROR
|
||||
#endif
|
||||
|
||||
namespace G3D {
|
||||
|
||||
/**
|
||||
Describes the behavior of G3D::Texture, G3D::Map2D, G3D::Image3,
|
||||
etc. when accessing an out-of-bounds pixel. Not all classes support
|
||||
all modes.
|
||||
|
||||
Refer to these as scoped enums, e.g., <code>WrapMode m = WrapMode::CLAMP;</code>.
|
||||
|
||||
WrapMode::IGNORE silently discards attempts to write to out
|
||||
of bounds locations and returns an undefined value for reading
|
||||
from out of bounds locations.
|
||||
|
||||
WrapMode::ERROR generates an error when the
|
||||
pixel indices are out of bounds
|
||||
|
||||
WrapMode::CLAMP makes out of bounds pixels equal to the last in-range pixel along that dimension.
|
||||
|
||||
WrapMode::TILE computes out of bounds pixels modulo the dimension
|
||||
|
||||
WrapMode::ZERO treats out of bounds values as the zero value, which varies in definition
|
||||
according to the class used. For example, with a G3D::Texture, ZERO = Color4(0,0,0,0).
|
||||
|
||||
Uses the "Intelligent Enum" design pattern
|
||||
http://www.codeguru.com/cpp/cpp/cpp_mfc/article.php/c4001/
|
||||
*/
|
||||
class WrapMode {
|
||||
public:
|
||||
/** Don't use this enum; use WrapMode instances instead. */
|
||||
enum Value {
|
||||
CLAMP,
|
||||
TILE,
|
||||
ZERO,
|
||||
IGNORE,
|
||||
ERROR
|
||||
} value;
|
||||
|
||||
static const char* toString(int i, Value& v) {
|
||||
static const char* str[] = {"CLAMP", "TILE", "ZERO", "IGNORE", "ERROR", NULL};
|
||||
static const Value val[] = {CLAMP, TILE, ZERO, IGNORE, ERROR};
|
||||
const char* s = str[i];
|
||||
if (s) {
|
||||
v = val[i];
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
|
||||
G3D_DECLARE_ENUM_CLASS_METHODS(WrapMode);
|
||||
};
|
||||
|
||||
|
||||
} // namespace G3D
|
||||
|
||||
G3D_DECLARE_ENUM_CLASS_HASHCODE(G3D::WrapMode);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user