#pragma once
#include <stdint.h>
#define OF_VERSION_MAJOR 0
#define OF_VERSION_MINOR 11
#define OF_VERSION_PATCH 0
#define OF_VERSION_PRE_RELEASE "master"
#ifndef OF_USE_LEGACY_VECTOR_MATH
#define OF_USE_LEGACY_VECTOR_MATH 0
#endif
#define GLM_FORCE_CTOR_INIT
#ifndef OF_USING_STD_FS
#define OF_USING_STD_FS 0
#endif
enum ofTargetPlatform{
OF_TARGET_OSX,
OF_TARGET_MINGW,
OF_TARGET_WINVS,
OF_TARGET_IOS,
OF_TARGET_ANDROID,
OF_TARGET_LINUX,
OF_TARGET_LINUX64,
OF_TARGET_LINUXARMV6L,
OF_TARGET_LINUXARMV7L,
OF_TARGET_EMSCRIPTEN
};
#ifndef OF_TARGET_IPHONE
#define OF_TARGET_IPHONE OF_TARGET_IOS
#endif
#ifdef __GNUC__
#if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || __GNUC__ > 4
#define OF_DEPRECATED_MSG(message, ...) __VA_ARGS__ __attribute__ ((deprecated(message)))
#else
#define OF_DEPRECATED_MSG(message, ...) __VA_ARGS__ __attribute__ ((deprecated))
#endif
#define OF_DEPRECATED(...) __VA_ARGS__ __attribute__ ((deprecated))
#define OF_INTERNAL_DEPRECATED(...) __VA_ARGS__ __attribute__ ((deprecated("OF core deprecated")))
#elif defined(_MSC_VER)
#define OF_DEPRECATED_MSG(message, ...) __declspec(deprecated(message)) __VA_ARGS__
#define OF_DEPRECATED(...) __declspec(deprecated) __VA_ARGS__
#define OF_INTERNAL_DEPRECATED(...) __declspec(deprecated("OF core deprecated")) __VA_ARGS__
#else
#pragma message("WARNING: You need to implement DEPRECATED for this compiler")
#define OF_DEPRECATED_MSG(message, ...) __VA_ARGS__
#define OF_DEPRECATED(...) __VA_ARGS__
#endif
#if defined( __WIN32__ ) || defined( _WIN32 )
#define TARGET_WIN32
#elif defined( __APPLE_CC__)
#define __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES 0
#include <TargetConditionals.h>
#if (TARGET_OS_IPHONE || TARGET_OS_IOS || TARGET_OS_SIMULATOR || TARGET_OS_IPHONE_SIMULATOR) && !TARGET_OS_TV && !TARGET_OS_WATCH
#define TARGET_OF_IPHONE
#define TARGET_OF_IOS
#define TARGET_OPENGLES
#include <unistd.h>
#elif TARGET_OS_TV
#define TARGET_OF_IOS
#define TARGET_OF_TVOS
#define TARGET_OPENGLES
#include <unistd.h>
#elif TARGET_OS_WATCH
#define TARGET_OF_IOS
#define TARGET_OF_WATCHOS
#define TARGET_OPENGLES
#include <unistd.h>
#else
#define TARGET_OSX
#endif
#elif defined (__ANDROID__)
#define TARGET_ANDROID
#define TARGET_OPENGLES
#elif defined(__ARMEL__)
#define TARGET_LINUX
#define TARGET_OPENGLES
#define TARGET_LINUX_ARM
#elif defined(__EMSCRIPTEN__)
#define TARGET_EMSCRIPTEN
#define TARGET_OPENGLES
#define TARGET_NO_THREADS
#define TARGET_PROGRAMMABLE_GL
#define TARGET_IMPLEMENTS_URL_LOADER
#else
#define TARGET_LINUX
#endif
#ifdef TARGET_WIN32
#define GLEW_STATIC
#define GLEW_NO_GLU
#include "GL/glew.h"
#include "GL/wglew.h"
#define __WINDOWS_DS__
#define __WINDOWS_MM__
#if (_MSC_VER)
#define _CRT_SECURE_NO_WARNINGS
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include <stdint.h>
#include <functional>
#pragma warning(disable : 4068)
#pragma warning(disable : 4756)
#pragma warning(disable : 4800)
#pragma warning(disable : 4244)
#pragma warning(disable : 4305)
#undef min
#undef max
#endif
#define TARGET_LITTLE_ENDIAN
#ifndef GL_BGR_EXT
#define GL_BGR_EXT 0x80E0
#endif
#define WIN32_HIGH_RES_TIMING
#endif
#ifdef TARGET_OSX
#ifndef __MACOSX_CORE__
#define __MACOSX_CORE__
#endif
#include <unistd.h>
#include "GL/glew.h"
#include <ApplicationServices/ApplicationServices.h>
#if defined(__LITTLE_ENDIAN__)
#define TARGET_LITTLE_ENDIAN
#endif
#endif
#ifdef TARGET_LINUX
#include <unistd.h>
#ifdef TARGET_LINUX_ARM
#ifdef TARGET_RASPBERRY_PI
#include "bcm_host.h"
#undef countof
#endif
#include "GLES/gl.h"
#include "GLES/glext.h"
#include "GLES2/gl2.h"
#include "GLES2/gl2ext.h"
#define EGL_EGLEXT_PROTOTYPES
#include "EGL/egl.h"
#include "EGL/eglext.h"
#else
#include <GL/glew.h>
#endif
#define TARGET_LITTLE_ENDIAN
#define B14400 14400
#define B28800 28800
#endif
#ifdef TARGET_OF_IOS
#import <OpenGLES/ES1/gl.h>
#import <OpenGLES/ES1/glext.h>
#import <OpenGLES/ES2/gl.h>
#import <OpenGLES/ES2/glext.h>
#define TARGET_LITTLE_ENDIAN
#endif
#ifdef TARGET_ANDROID
#include <typeinfo>
#include <unistd.h>
#include <GLES/gl.h>
#define GL_GLEXT_PROTOTYPES
#include <GLES/glext.h>
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
#define TARGET_LITTLE_ENDIAN
#endif
#ifdef TARGET_EMSCRIPTEN
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
#include "EGL/egl.h"
#include "EGL/eglext.h"
#define TARGET_LITTLE_ENDIAN
#endif
#include "tesselator.h"
typedef TESSindex ofIndexType;
#define OF_EXIT_APP(val) std::exit(val);
#include <cstdio>
#include <cstdlib>
#include <string>
#include <cstring>
#include <iostream>
#include <vector>
#include <memory>
#include <functional>
#if !defined(OF_VIDEO_CAPTURE_GSTREAMER) && !defined(OF_VIDEO_CAPTURE_QUICKTIME) && !defined(OF_VIDEO_CAPTURE_DIRECTSHOW) && !defined(OF_VIDEO_CAPTURE_ANDROID) && !defined(OF_VIDEO_CAPTURE_IOS)
#ifdef TARGET_LINUX
#define OF_VIDEO_CAPTURE_GSTREAMER
#elif defined(TARGET_OSX)
#ifndef MAC_OS_X_VERSION_10_7
#define OF_VIDEO_CAPTURE_QUICKTIME
#elif !defined(MAC_OS_X_VERSION_10_12) || MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_12
#define OF_VIDEO_CAPTURE_QTKIT
#else
#define OF_VIDEO_CAPTURE_AVF
#endif
#elif defined (TARGET_WIN32)
#define OF_SWITCH_TO_DSHOW_FOR_WIN_VIDCAP
#ifdef OF_SWITCH_TO_DSHOW_FOR_WIN_VIDCAP
#define OF_VIDEO_CAPTURE_DIRECTSHOW
#else
#define OF_VIDEO_CAPTURE_QUICKTIME
#endif
#elif defined(TARGET_ANDROID)
#define OF_VIDEO_CAPTURE_ANDROID
#elif defined(TARGET_EMSCRIPTEN)
#define OF_VIDEO_CAPTURE_EMSCRIPTEN
#elif defined(TARGET_OF_IOS)
#define OF_VIDEO_CAPTURE_IOS
#endif
#endif
#if !defined(OF_VIDEO_PLAYER_GSTREAMER) && !defined(OF_VIDEO_PLAYER_IOS) && !defined(OF_VIDEO_PLAYER_DIRECTSHOW) && !defined(OF_VIDEO_PLAYER_QUICKTIME) && !defined(OF_VIDEO_PLAYER_AVFOUNDATION) && !defined(OF_VIDEO_PLAYER_EMSCRIPTEN)
#ifdef TARGET_LINUX
#define OF_VIDEO_PLAYER_GSTREAMER
#elif defined(TARGET_ANDROID)
#define OF_VIDEO_PLAYER_ANDROID
#elif defined(TARGET_OF_IOS)
#define OF_VIDEO_PLAYER_IOS
#elif defined(TARGET_WIN32)
#define OF_VIDEO_PLAYER_DIRECTSHOW
#elif defined(TARGET_OSX)
#ifndef MAC_OS_X_VERSION_10_7
#define OF_VIDEO_PLAYER_QUICKTIME
#elif !defined(MAC_OS_X_VERSION_10_8)
#define OF_VIDEO_PLAYER_QTKIT
#else
#define OF_VIDEO_PLAYER_AVFOUNDATION
#endif
#elif defined(TARGET_EMSCRIPTEN)
#define OF_VIDEO_PLAYER_EMSCRIPTEN
#else
#define OF_VIDEO_PLAYER_QUICKTIME
#endif
#endif
#if !defined(OF_SOUNDSTREAM_RTAUDIO) && !defined(OF_SOUNDSTREAM_ANDROID) && !defined(OF_SOUNDSTREAM_IOS) && !defined(OF_SOUNDSTREAM_EMSCRIPTEN)
#if defined(TARGET_LINUX) || defined(TARGET_WIN32) || defined(TARGET_OSX)
#define OF_SOUNDSTREAM_RTAUDIO
#elif defined(TARGET_ANDROID)
#define OF_SOUNDSTREAM_ANDROID
#elif defined(TARGET_OF_IOS)
#define OF_SOUNDSTREAM_IOS
#elif defined(TARGET_EMSCRIPTEN)
#define OF_SOUNDSTREAM_EMSCRIPTEN
#endif
#endif
#if !defined(OF_SOUND_PLAYER_QUICKTIME) && !defined(OF_SOUND_PLAYER_FMOD) && !defined(OF_SOUND_PLAYER_OPENAL) && !defined(OF_SOUND_PLAYER_EMSCRIPTEN)
#ifdef TARGET_OF_IOS
#define OF_SOUND_PLAYER_IPHONE
#elif defined(TARGET_LINUX)
#define OF_SOUND_PLAYER_OPENAL
#elif defined(TARGET_EMSCRIPTEN)
#define OF_SOUND_PLAYER_EMSCRIPTEN
#elif !defined(TARGET_ANDROID) && (!defined(USE_FMOD) || USE_FMOD)
#define OF_SOUND_PLAYER_FMOD
#endif
#endif
#if __cplusplus>=201103 || _MSC_VER >= 1700
#define HAS_CPP11 1
#endif
#ifndef HAS_TLS
#if defined(__clang__) && __clang__
#if __has_feature(cxx_thread_local) && !defined(__MINGW64__) && !defined(__MINGW32__) && !defined(__ANDROID__) && !defined(TARGET_OF_IOS)
#define HAS_TLS 1
#endif
#elif !defined(TARGET_WIN32) || _MSC_VER
#define HAS_TLS 1
#endif
#endif
#if !defined(NO_OF_MAKE_UNIQUE) && (defined(_MSC_VER) && _MSC_VER < 1800) || (!defined(_MSC_VER) && __cplusplus <= 201103L)
namespace std {
template <typename T, typename... Args>
std::unique_ptr<T> make_unique_helper(std::false_type, Args&&... args) {
return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
}
template <typename T, typename... Args>
std::unique_ptr<T> make_unique_helper(std::true_type, Args&&... args) {
static_assert(std::extent<T>::value == 0,
"make_unique<T[N]>() is forbidden, please use make_unique<T[]>().");
typedef typename std::remove_extent<T>::type U;
return std::unique_ptr<T>(new U[sizeof...(Args)]{std::forward<Args>(args)...});
}
template <typename T, typename... Args>
std::unique_ptr<T> make_unique(Args&&... args) {
return make_unique_helper<T>(std::is_array<T>(), std::forward<Args>(args)...);
}
}
#endif
#if OF_USING_STD_FS
# if __cplusplus < 201703L
namespace std {
namespace experimental{
namespace filesystem {
namespace v1 {
namespace __cxx11 {
class path;
}
}
using v1::__cxx11::path;
}
}
namespace filesystem = experimental::filesystem;
}
# else
namespace std {
namespace filesystem {
class path;
}
}
# endif
#else
# if !_MSC_VER
# define BOOST_NO_CXX11_SCOPED_ENUMS
# define BOOST_NO_SCOPED_ENUMS
# endif
namespace boost {
namespace filesystem {
class path;
}
}
namespace std {
namespace filesystem = boost::filesystem;
}
#endif
Comments