GlsAnimation Library  1.0.5
Provides classes and functions to support animating GL Studio objects programmatically or with script files
Classes | Typedefs | Functions | Variables
gls_keyframe.h File Reference

The GL Studio keyframe animation classes. More...

#include <algorithm>
#include <cfloat>
#include <cmath>
#include <cstring>
#include <limits>
#include <memory>
#include <string>
#include <utility>
#include <vector>
#include "disti_assert.h"
#include "gls_color.h"
#include "util.h"
#include "vertex.h"
#include "gls_quaternion.h"

Go to the source code of this file.

Classes

class  disti::GlsKeyframeCurveBase
 Base class for the keyframe curve class template. More...
 
struct  disti::Detail::FloatSelector< T >
 A helper class for choosing the required floating-point type. More...
 
struct  disti::Detail::FloatSelector< Vector >
 Vector only handles float arithmetic. Most types can use the default. More...
 
struct  disti::GlsKeyframeInterpolator< T >
 An abstract base class for all keyframe interpolators. More...
 
struct  disti::GlsLinearInterpolator< Value >
 
struct  disti::GlsColorInterpolationAdapter
 
struct  disti::GlsGatedInterpolator< Value >
 
struct  disti::GlsSphericalLinearInterpolator< Value >
 
struct  disti::GlsSphericalLinearInterpolator< GlsQuaternionD >
 Implementation of GlsSphericalLinearInterpolator for quaternions. More...
 
struct  disti::GlsSphericalLinearInterpolator< Vector >
 
struct  disti::GlsQuadraticEaseInInterpolator< Value >
 
struct  disti::GlsQuadraticEaseOutInterpolator< Value >
 
struct  disti::GlsQuadraticEaseInOutInterpolator< Value >
 
struct  disti::GlsCubicEaseInInterpolator< Value >
 
struct  disti::GlsCubicEaseOutInterpolator< Value >
 
struct  disti::GlsCubicEaseInOutInterpolator< Value >
 
struct  disti::GlsQuarticEaseInInterpolator< Value >
 
struct  disti::GlsQuarticEaseOutInterpolator< Value >
 
struct  disti::GlsQuarticEaseInOutInterpolator< Value >
 
struct  disti::GlsQuinticEaseInInterpolator< Value >
 
struct  disti::GlsQuinticEaseOutInterpolator< Value >
 
struct  disti::GlsQuinticEaseInOutInterpolator< Value >
 
struct  disti::GlsSinusoidalEaseInInterpolator< Value >
 
struct  disti::GlsSinusoidalEaseOutInterpolator< Value >
 
struct  disti::GlsSinusoidalEaseInOutInterpolator< Value >
 
struct  disti::GlsExponentialEaseInInterpolator< Value >
 
struct  disti::GlsExponentialEaseOutInterpolator< Value >
 
struct  disti::GlsExponentialEaseInOutInterpolator< Value >
 
struct  disti::GlsCircularEaseInInterpolator< Value >
 
struct  disti::GlsCircularEaseOutInterpolator< Value >
 
struct  disti::GlsCircularEaseInOutInterpolator< Value >
 
struct  disti::GlsElasticEaseInInterpolator< Value >
 
struct  disti::GlsElasticEaseOutInterpolator< Value >
 
struct  disti::GlsElasticEaseInOutInterpolator< Value >
 
struct  disti::GlsBounceEaseInInterpolator< Value >
 
struct  disti::GlsBounceEaseOutInterpolator< Value >
 
struct  disti::GlsBounceEaseInOutInterpolator< Value >
 
struct  disti::GlsBackEaseInInterpolator< Value >
 
struct  disti::GlsBackEaseOutInterpolator< Value >
 
struct  disti::GlsBackEaseInOutInterpolator< Value >
 
struct  disti::Detail::DefaultInterpolator< Value >
 
struct  disti::Detail::DefaultInterpolator< GlsQuaternionD >
 Quaterions should be slerped by default. More...
 
struct  disti::Detail::DefaultInterpolator< std::string >
 Strings aren't interpreted, so they must be gated. More...
 
struct  disti::Detail::DefaultInterpolator< glsColor >
 Strings aren't interpreted, so they must be gated. More...
 
class  disti::GlsKeyframeCurve< T >
 Class template for keyframe curves of different types (double, Vector, etc.) More...
 

Typedefs

typedef unsigned int disti::Detail::ID
 Type for unique identifiers.
 

Functions

unsigned char disti::Detail::ToColorElement (const double d)
 
bool disti::Detail::FloatGreaterThan (const double lhs, const double rhs, const float tolerance=g_glsAnimationFloatTolerance)
 
bool disti::Detail::FloatLessThan (const double lhs, const double rhs, const float tolerance=g_glsAnimationFloatTolerance)
 
bool disti::Detail::FloatGreaterThanOrEqualTo (const double lhs, const double rhs, const float tolerance=g_glsAnimationFloatTolerance)
 
bool disti::Detail::FloatLessThanOrEqualTo (const double lhs, const double rhs, const float tolerance=g_glsAnimationFloatTolerance)
 
bool disti::Detail::IsNaN (const double d)
 Detects not-a-number (NaN)
 

Variables

const float disti::Detail::g_glsAnimationFloatTolerance = 1e-5f
 The tolerance for our floating-point comparisons.
 
const double disti::Detail::g_pi = 3.14159265358979323846
 Global constant for math.
 
const GlsKeyframeCurveBase::Key disti::Detail::g_nan = std::numeric_limits<GlsKeyframeCurveBase::Key>::quiet_NaN()
 Constant for not-a-number (NaN) for easier reading.
 

Detailed Description

The GL Studio keyframe animation classes.

Version
1.0.6
Copyright Information

Copyright (c) 2017 by The DiSTI Corporation.
11301 Corporate Blvd; Suite 100
Orlando, Florida 32817
USA

All rights reserved.

This Software contains proprietary trade secrets of DiSTI and may not be reproduced, in whole or part, in any form, or by any means of electronic, mechanical, or otherwise, without the written permission of DiSTI. Said permission may be derived through the purchase of applicable DiSTI product licenses which detail the distribution rights of this content and any Derivative Works based on this or other copyrighted DiSTI Software.

NO WARRANTY. THE SOFTWARE IS PROVIDED "AS-IS," WITHOUT WARRANTY OF ANY KIND, AND ANY USE OF THIS SOFTWARE PRODUCT IS AT YOUR OWN RISK. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, DISTI AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES AND CONDITIONS, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT, WITH REGARD TO THE SOFTWARE.

LIMITATION OF LIABILITY. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL DISTI OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE SOFTWARE, EVEN IF DISTI HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. DISTI'S ENTIRE LIABILITY AND YOUR EXCLUSIVE REMEDY SHALL NOT EXCEED FIVE DOLLARS (US$5.00).

The aforementioned terms and restrictions are governed by the laws of the State of Florida and the United States of America.