Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
ion Namespace Reference

Namespaces

 Animation
 
 Color
 
 Constants32
 
 Constants64
 
 Graphics
 Contains ionGraphics module and implementations.
 
 GUI
 
 Scene
 Documentation of the ionScene module.
 

Classes

class  Bitwise
 Tools for bitwise operations. More...
 
struct  box2
 
class  CAssetManager
 
class  CCameraController
 
class  CColorTable
 
class  CDefaultApplication
 
class  CGamePad
 
class  CGamePadCameraController
 
class  CGraphicsAPI
 
class  CGUIManager
 
class  CImage
 
class  CKDTree
 
struct  CKDTreeNeighborSet
 
class  CKDTreeNode
 
class  color3
 Customized variant of vec3 that intelligently handles conversion between floating point and integer colors. More...
 
class  color4
 Customized variant of vec4 that intelligently handles conversion between floating point and integer colors. More...
 
struct  Constants
 Template-friendly access to Constants32 or Constants64. More...
 
struct  Constants< double >
 
struct  Constants< float >
 
class  CPrintProgressBar
 
class  CSceneManager
 
class  CStateManager
 
class  CStopWatch
 
class  CTimeManager
 
class  CTransformationChain
 
class  CWindow
 
class  CWindowManager
 
class  Directory
 
struct  EKeyModifier
 
class  File
 Helper methods for dealing with files. More...
 
class  IColorMapper
 
class  IDatabase
 
class  IDataRecord
 
class  IEntity
 Base class for Component-Entity design pattern implementation driven by typesBasic Usage: Derive your entity class from IEntity<T> where T is the base class of your Entity class. More...
 
class  IGraphicsImplementation
 
class  IMultiTreeNode
 Variant of ITreeNode that doesn't require a single parent relationship. More...
 
class  IProgressBar
 
class  ITreeNode
 Interface for a Node in a generic tree structure.Note that a static_cast to TreeNode<Implementation> is sometimes needed for compilation in VS2012 where Implementation has 'uses' for Children or Parent since these fields will then have protected access in the subclass. More...
 
class  line2
 2D line segment More...
 
class  Log
 Logging class. More...
 
class  Random
 Helper methods for generating random numbers. More...
 
class  ray3
 3D ray More...
 
struct  RoundingError
 Helper template to enable template-dependant epsilon values. More...
 
struct  RoundingError< double >
 Template specialization of RoundingError for 64bit floating-point values. More...
 
struct  RoundingError< float >
 Template specialization of RoundingError for 32bit floating-point values. More...
 
class  SBoundingBox3
 3D axis-aligned bounding box More...
 
struct  SCharacterEvent
 
struct  SFileDroppedEvent
 
struct  SGamePadButtonEvent
 
struct  SGrid
 
class  Singleton
 Base class for Singleton design pattern implementation. More...
 
class  SingletonPointer
 Wraps a pointer to a singleton object. More...
 
struct  SKeyboardEvent
 
class  SLine3
 3D line segment More...
 
struct  SLongitudeLatitude
 
struct  SMarchingCubesPoint
 
struct  SMouseEvent
 
class  SPlane3
 3D plane More...
 
struct  SRange
 
class  SRect2
 2D rectangle More...
 
class  STable
 
class  STransformation3
 Describes a 3D transformation as a composed translation, rotation, and scale. More...
 
class  STriangle2
 2D triangle More...
 
struct  STriangle2D
 
class  STriangle3
 3D triangle More...
 
class  String
 Helper methods for dealing with strings. More...
 
struct  SVolume
 
struct  SVolumeDatabase
 
struct  SVolumeDataRecord
 
struct  SWindowResizedEvent
 
struct  Type
 Lightweight wrapper for std::type_info that enables sorting (e.g. for use in a std::map) More...
 
struct  vec2
 2D vector More...
 
struct  vec3
 3D vector More...
 
class  vec4
 4D vector More...
 

Typedefs

typedef color3< bytecolor3i
 
typedef color3< float > color3f
 
typedef color4< bytecolor4i
 
typedef color4< float > color4f
 
template<typename T >
using UniquePointer = std::unique_ptr< T >
 
template<typename T >
using SharedPointer = std::shared_ptr< T >
 
template<typename T >
using WeakPointer = std::weak_ptr< T >
 
typedef unsigned short ushort
 
typedef unsigned int uint
 
typedef unsigned long ulong
 
typedef unsigned long long ulonglong
 
typedef unsigned char byte
 
typedef vec2< float > vec2f
 
typedef vec2< double > vec2d
 
typedef vec2< int > vec2i
 
typedef vec3< float > vec3f
 
typedef vec3< double > vec3d
 
typedef vec3< int > vec3i
 
typedef vec4< float > vec4f
 
typedef vec4< double > vec4d
 
typedef vec4< int > vec4i
 
typedef box2< float > box2f
 
typedef box2< double > box2d
 
typedef box2< int > box2i
 
typedef line2< float > line2f
 
typedef line2< double > line2d
 
typedef line2< int > line2i
 
typedef ray3< float > ray3f
 
typedef ray3< double > ray3d
 
template<typename T >
using boundingbox3 = SBoundingBox3< T >
 
template<typename T >
using bbox3 = SBoundingBox3< T >
 
template<typename T >
using box3 = SBoundingBox3< T >
 
typedef SBoundingBox3< float > SBoundingBox3f
 
typedef SBoundingBox3< double > SBoundingBox3d
 
typedef SBoundingBox3< int > SBoundingBox3i
 
typedef SBoundingBox3< float > box3f
 
typedef SBoundingBox3< double > box3d
 
typedef SBoundingBox3< int > box3i
 
typedef SLine3< float > SLine3f
 
typedef SLine3< double > SLine3d
 
typedef SLine3< int > SLine3i
 
typedef SLine3< float > line3f
 
typedef SLine3< double > line3d
 
typedef SLine3< int > line3i
 
typedef SPlane3< float > plane3f
 
typedef SPlane3< int > plane3i
 
typedef SRect2< float > SRect2f
 
typedef SRect2< double > SRect2d
 
typedef SRect2< int > SRect2i
 
typedef SRect2< ion::uintSRect2u
 
typedef SRect2f rect2f
 
typedef SRect2d rect2d
 
typedef SRect2i rect2i
 
typedef SRect2u rect2u
 
typedef STriangle2< float > STriangle2f
 
typedef STriangle2< double > STriangle2d
 
typedef STriangle2< int > STriangle2i
 
typedef STriangle2< ion::uintSTriangle2u
 
typedef STriangle2f tri2f
 
typedef STriangle2d tri2d
 
typedef STriangle2i tri2i
 
typedef STriangle2u tri2u
 
typedef STriangle3< float > STriangle3f
 
typedef STriangle3< double > STriangle3d
 
typedef STriangle3< int > STriangle3i
 
typedef STriangle3< ion::uintSTriangle3u
 
typedef STriangle3f tri3f
 
typedef STriangle3d tri3d
 
typedef STriangle3i tri3i
 
typedef STriangle3u tri3u
 
typedef SVolume< SMarchingCubesPointSMarchingCubesVolume
 
typedef SLongitudeLatitude< float > longlatf
 
typedef SLongitudeLatitude< double > longlatd
 

Enumerations

enum  ELogChannel { ELogChannel::Error = 0, ELogChannel::Warn = 1, ELogChannel::Info = 2 }
 Channels used by Log. More...
 
enum  ETransformationOrder {
  ETransformationOrder::TranslationRotationScale, ETransformationOrder::TranslationScaleRotation, ETransformationOrder::RotationScaleTranslation, ETransformationOrder::RotationTranslationScale,
  ETransformationOrder::ScaleTranslationRotation, ETransformationOrder::ScaleRotationTranslation
}
 Order of transformations used by STransformation3. More...
 
enum  ERotationOrder {
  ERotationOrder::ZYX, ERotationOrder::ZXY, ERotationOrder::YXZ, ERotationOrder::YZX,
  ERotationOrder::XZY, ERotationOrder::XYZ
}
 Order of rotations, i.e. Euler angles, used by STransformation3. More...
 
enum  ECompassDirection { ECompassDirection::N = 1, ECompassDirection::E = 1, ECompassDirection::S = -1, ECompassDirection::W = -1 }
 
enum  EGamePadButton {
  EGamePadButton::A, EGamePadButton::B, EGamePadButton::X, EGamePadButton::Y,
  EGamePadButton::LeftShoulder, EGamePadButton::RightShoulder, EGamePadButton::DPadUp, EGamePadButton::DPadDown,
  EGamePadButton::DPadLeft, EGamePadButton::DPadRight, EGamePadButton::Start, EGamePadButton::Back,
  EGamePadButton::LeftThumb, EGamePadButton::RightThumb, EGamePadButton::Count
}
 
enum  EWindowType { EWindowType::Fullscreen, EWindowType::Windowed }
 
enum  EVsyncMode { EVsyncMode::Default, EVsyncMode::Off, EVsyncMode::On }
 
enum  EKey {
  EKey::Unknown = -1, EKey::Space = ' ', EKey::Quote = '\'', EKey::Comma = ',',
  EKey::Minus = '-', EKey::Period = '.', EKey::Slash = '/', EKey::Num0 = '0',
  EKey::Num1 = '1', EKey::Num2 = '2', EKey::Num3 = '3', EKey::Num4 = '4',
  EKey::Num5 = '5', EKey::Num6 = '6', EKey::Num7 = '7', EKey::Num8 = '8',
  EKey::Num9 = '9', EKey::Semicolon = ';', EKey::Equals = '=', EKey::A = 'A',
  EKey::B = 'B', EKey::C = 'C', EKey::D = 'D', EKey::E = 'E',
  EKey::F = 'F', EKey::G = 'G', EKey::H = 'H', EKey::I = 'I',
  EKey::J = 'J', EKey::K = 'K', EKey::L = 'L', EKey::M = 'M',
  EKey::N = 'N', EKey::O = 'O', EKey::P = 'P', EKey::Q = 'Q',
  EKey::R = 'R', EKey::S = 'S', EKey::T = 'T', EKey::U = 'U',
  EKey::V = 'V', EKey::W = 'W', EKey::X = 'X', EKey::Y = 'Y',
  EKey::Z = 'Z', EKey::LeftBracket = '[', EKey::BackSlash = '\\', EKey::RightBracket = ']',
  EKey::Grave = '`', EKey::Escape = 0x100, EKey::Enter, EKey::Tab,
  EKey::Backspace, EKey::Insert, EKey::Delete, EKey::Right,
  EKey::Left, EKey::Down, EKey::Up, EKey::PageUp,
  EKey::PageDown, EKey::Home, EKey::End, EKey::NumLock,
  EKey::CapsLock, EKey::ScrollLock, EKey::PrintScreen, EKey::Pause,
  EKey::F1, EKey::F2, EKey::F3, EKey::F4,
  EKey::F5, EKey::F6, EKey::F7, EKey::F8,
  EKey::F9, EKey::F10, EKey::F11, EKey::F12,
  EKey::F13, EKey::F14, EKey::F15, EKey::KeyPad0,
  EKey::KeyPad1, EKey::KeyPad2, EKey::KeyPad3, EKey::KeyPad4,
  EKey::KeyPad5, EKey::KeyPad6, EKey::KeyPad7, EKey::KeyPad8,
  EKey::KeyPad9, EKey::KeyPadDecimal, EKey::KeyPadDivide, EKey::KeyPadMultiply,
  EKey::KeyPadSubtract, EKey::KeyPadAdd, EKey::KeyPadEnter, EKey::KeyPadEquals,
  EKey::LeftShift, EKey::LeftControl, EKey::LeftAlt, EKey::LeftSuper,
  EKey::RightShift, EKey::RightControl, EKey::RightAlt, EKey::RightSuper,
  EKey::Menu, EKey::Count
}
 

Functions

template<typename T , typename U >
bool InstanceOf (U *Object)
 Check whether an object is an instance of a type. More...
 
template<typename T , typename U >
bool InstanceOf (U &Object)
 Check whether an object is an instance of a type. More...
 
template<typename T , typename U >
T * As (U *Object)
 Casts an object as a different type, performing a validity check. More...
 
template<typename T , typename U >
T const * As (U const *Object)
 Casts a constant object as a different type, performing a validity check. More...
 
template<typename T , typename U >
T & As (U &Object)
 Casts an object as a different type, performing a validity check. More...
 
template<typename T , typename U >
T const & As (U const &Object)
 Casts a constant object as a different type, performing a validity check. More...
 
template<typename T , typename U >
U * ConditionalMapAccess (map< T, U * > const &Map, T const Key)
 
template<typename T , typename U >
SharedPointer< U > ConditionalMapAccess (map< T, SharedPointer< U >> const &Map, T const Key)
 
template<typename T , typename U >
U * ConditionalMapAccess (unordered_map< T, U * > const &Map, T const Key)
 
template<typename T , typename U >
bool CheckMapAccess (map< T, U > const &Map, T const Key)
 
template<typename T , typename U >
bool TryMapAccess (map< T, U > const &Map, T const Key, U &Value)
 
template<typename T , typename U >
set< T > KeySet (map< T, U > const &Map)
 
template<typename T >
void AddAtEnd (vector< T > &A, vector< T > const &B)
 
template<typename T >
void EraseRemove (vector< T > &A, T B)
 
template<typename T , typename U >
void EraseRemove (vector< T > &A, U B)
 
template<typename T >
void DeleteAndClear (vector< T > &A)
 Deletes every pointer element of a vector and then clears the vector. More...
 
template<typename T >
Abs (T const value)
 
template<typename T >
Sin (T const value)
 
template<typename T >
ArcSin (T const value)
 
template<typename T >
Cos (T const value)
 
template<typename T >
ArcCos (T const value)
 
template<typename T >
Tan (T const value)
 
template<typename T >
ArcTan (T const value)
 
template<typename T >
ArcTan (T const y, T const x)
 
template<typename T >
Sqrt (T const value)
 
template<typename T >
DegToRad (T const degrees)
 
template<typename T >
RadToDeg (T const radians)
 
template<typename T >
bool IsNaN (T const value)
 
template<typename T >
Saturate (T const value)
 Clamps a value between 0 and 1. More...
 
void WaitForUser ()
 Portable version of system("PAUSE") More...
 
int DigitCount (int n)
 Count the number of digits (including a - for negative numbers) in a decimal integer. More...
 
int MakeEven (int const i)
 
bool ToggleBool (bool &Condition)
 
float Saturate (float const v)
 
double Saturate (double const v)
 
template<typename T >
Clamp (T const v, T const min, T const max)
 
template<typename T >
Sq (T const a)
 
template<typename T >
Average (T const a, T const b)
 
template<typename T >
Average (T const a, T const b, T const c)
 
template<typename T >
Average (T const a, T const b, T const c, T const d)
 
template<typename T >
Sign (T const val)
 
void ImGui_ImplGlfwGL3_RenderDrawLists (ImDrawData *draw_data)
 
char const * ImGui_ImplGlfwGL3_GetClipboardText (void *user_data)
 
void ImGui_ImplGlfwGL3_SetClipboardText (void *user_data, char const *text)
 
char const * BoolToString (bool const B)
 
float Determinant (vec2f const &u, vec2f const &v)
 
bool IsPointInTriangle (vec2f const &a, vec2f const &b, vec2f const &c, vec2f const &point)
 
bool IsPointInOrOnTriangle (vec2f const &a, vec2f const &b, vec2f const &c, vec2f const &point)
 
double Determinant (vec2d const &u, vec2d const &v)
 
bool IsPointInTriangle (vec2d const &a, vec2d const &b, vec2d const &c, vec2d const &point)
 
bool IsPointInOrOnTriangle (vec2d const &a, vec2d const &b, vec2d const &c, vec2d const &point)
 
template<typename T >
vector< STriangle2D< T > > TriangulateEarClipping_Implementation (vector< vec2< T >> const &OriginalPoints)
 
vector< STriangle2D< float > > TriangulateEarClipping (vector< vec2f > const &OriginalPoints)
 
vector< STriangle2D< double > > TriangulateEarClipping (vector< vec2d > const &OriginalPoints)
 
template<typename T >
LinearInterpolate (T p1, T p2, T x)
 
template<typename T >
LinearInterpolate (T p[2], T x)
 
template<typename T >
BilinearInterpolate (T p[2][2], T x, T y)
 
template<typename T >
TrilinearInterpolate (T p[2][2][2], T x, T y, T z)
 
template<typename T >
CubicInterpolate (T p[4], T x)
 
template<typename T >
BicubicInterpolate (T p[4][4], T x, T y)
 
template<typename T >
TricubicInterpolate (T p[4][4][4], T x, T y, T z)
 
template<typename T >
Gaussian (T x, T sigma)
 
void CalculateGradient (SMarchingCubesVolume &Volume)
 
ion::Scene::CSimpleMeshMarchingCubes (SMarchingCubesVolume &Volume)
 
template<class Iterator >
Iterator MaximumRealElement (Iterator First, Iterator Last)
 
template<class Iterator >
Iterator MinimumRealElement (Iterator First, Iterator Last)
 
EKey const ConvertGLFWKeyCode (int const Code)
 

Variables

float const RoundingError32 = 0.00001f
 Global constant for 32bit floating-point epsilon. More...
 
double const RoundingError64 = 0.00000001
 Global constant for 64bit floating-point epsilon. More...
 
int const TriTable [256][16]
 
uint const EdgeTable [256]
 

Typedef Documentation

template<typename T >
using ion::bbox3 = typedef SBoundingBox3<T>
template<typename T >
using ion::boundingbox3 = typedef SBoundingBox3<T>
typedef box2<double> ion::box2d
typedef box2<float> ion::box2f
typedef box2<int> ion::box2i
template<typename T >
using ion::box3 = typedef SBoundingBox3<T>
typedef SBoundingBox3<double> ion::box3d
typedef SBoundingBox3<float> ion::box3f
typedef SBoundingBox3<int> ion::box3i
typedef unsigned char ion::byte
typedef color3<float> ion::color3f
typedef color4<float> ion::color4f
typedef line2<double> ion::line2d
typedef line2<float> ion::line2f
typedef line2<int> ion::line2i
typedef SLine3<double> ion::line3d
typedef SLine3<float> ion::line3f
typedef SLine3<int> ion::line3i
typedef SPlane3<float> ion::plane3f
typedef SPlane3<int> ion::plane3i
typedef ray3<double> ion::ray3d
typedef ray3<float> ion::ray3f
typedef SLine3<double> ion::SLine3d
typedef SLine3<float> ion::SLine3f
typedef SLine3<int> ion::SLine3i
typedef SRect2<double> ion::SRect2d
typedef SRect2<float> ion::SRect2f
typedef SRect2<int> ion::SRect2i
typedef STriangle2<double> ion::STriangle2d
typedef STriangle2<float> ion::STriangle2f
typedef STriangle3<double> ion::STriangle3d
typedef STriangle3<float> ion::STriangle3f
typedef unsigned int ion::uint
typedef unsigned long ion::ulong
typedef unsigned long long ion::ulonglong
typedef unsigned short ion::ushort
typedef vec2<double> ion::vec2d
typedef vec2<float> ion::vec2f
typedef vec2<int> ion::vec2i
typedef vec3<double> ion::vec3d
typedef vec3<float> ion::vec3f
typedef vec3<int> ion::vec3i
typedef vec4<double> ion::vec4d
typedef vec4<float> ion::vec4f
typedef vec4<int> ion::vec4i

Enumeration Type Documentation

Enumerator
enum ion::EGamePadButton
strong
Enumerator
LeftShoulder 
RightShoulder 
DPadUp 
DPadDown 
DPadLeft 
DPadRight 
Start 
Back 
LeftThumb 
RightThumb 
Count 
enum ion::EKey
strong
Enumerator
Unknown 
Space 
Quote 
Comma 
Minus 
Period 
Slash 
Num0 
Num1 
Num2 
Num3 
Num4 
Num5 
Num6 
Num7 
Num8 
Num9 
Semicolon 
Equals 
LeftBracket 
BackSlash 
RightBracket 
Grave 
Escape 
Enter 
Tab 
Backspace 
Insert 
Delete 
Right 
Left 
Down 
Up 
PageUp 
PageDown 
Home 
End 
NumLock 
CapsLock 
ScrollLock 
PrintScreen 
Pause 
F1 
F2 
F3 
F4 
F5 
F6 
F7 
F8 
F9 
F10 
F11 
F12 
F13 
F14 
F15 
KeyPad0 
KeyPad1 
KeyPad2 
KeyPad3 
KeyPad4 
KeyPad5 
KeyPad6 
KeyPad7 
KeyPad8 
KeyPad9 
KeyPadDecimal 
KeyPadDivide 
KeyPadMultiply 
KeyPadSubtract 
KeyPadAdd 
KeyPadEnter 
KeyPadEquals 
LeftShift 
LeftControl 
LeftAlt 
LeftSuper 
RightShift 
RightControl 
RightAlt 
RightSuper 
Menu 
Count 
enum ion::EVsyncMode
strong
Enumerator
Default 
Off 
On 
enum ion::EWindowType
strong
Enumerator
Fullscreen 
Windowed 

Function Documentation

template<typename T >
T ion::BicubicInterpolate ( p[4][4],
x,
y 
)
template<typename T >
T ion::BilinearInterpolate ( p[2][2],
x,
y 
)
char const * ion::BoolToString ( bool const  B)
void ion::CalculateGradient ( SMarchingCubesVolume Volume)
EKey const ion::ConvertGLFWKeyCode ( int const  Code)
template<typename T >
T ion::CubicInterpolate ( p[4],
x 
)
template<typename T >
void ion::DeleteAndClear ( vector< T > &  A)

Deletes every pointer element of a vector and then clears the vector.

float ion::Determinant ( vec2f const &  u,
vec2f const &  v 
)
double ion::Determinant ( vec2d const &  u,
vec2d const &  v 
)
template<typename T >
T ion::Gaussian ( x,
sigma 
)
char const* ion::ImGui_ImplGlfwGL3_GetClipboardText ( void *  user_data)
void ion::ImGui_ImplGlfwGL3_RenderDrawLists ( ImDrawData *  draw_data)
void ion::ImGui_ImplGlfwGL3_SetClipboardText ( void *  user_data,
char const *  text 
)
bool ion::IsPointInOrOnTriangle ( vec2f const &  a,
vec2f const &  b,
vec2f const &  c,
vec2f const &  point 
)
bool ion::IsPointInOrOnTriangle ( vec2d const &  a,
vec2d const &  b,
vec2d const &  c,
vec2d const &  point 
)
bool ion::IsPointInTriangle ( vec2f const &  a,
vec2f const &  b,
vec2f const &  c,
vec2f const &  point 
)
bool ion::IsPointInTriangle ( vec2d const &  a,
vec2d const &  b,
vec2d const &  c,
vec2d const &  point 
)
template<typename T >
T ion::LinearInterpolate ( p1,
p2,
x 
)
template<typename T >
T ion::LinearInterpolate ( p[2],
x 
)
ion::Scene::CSimpleMesh * ion::MarchingCubes ( SMarchingCubesVolume Volume)
template<class Iterator >
Iterator ion::MaximumRealElement ( Iterator  First,
Iterator  Last 
)
template<class Iterator >
Iterator ion::MinimumRealElement ( Iterator  First,
Iterator  Last 
)
vector< STriangle2D< float > > ion::TriangulateEarClipping ( vector< vec2f > const &  OriginalPoints)
vector< STriangle2D< double > > ion::TriangulateEarClipping ( vector< vec2d > const &  OriginalPoints)
template<typename T >
vector<STriangle2D<T> > ion::TriangulateEarClipping_Implementation ( vector< vec2< T >> const &  OriginalPoints)
template<typename T >
T ion::TricubicInterpolate ( p[4][4][4],
x,
y,
z 
)
template<typename T >
T ion::TrilinearInterpolate ( p[2][2][2],
x,
y,
z 
)

Variable Documentation

uint const ion::EdgeTable
int const ion::TriTable