Configuru
|
Classes | |
class | CStrRange |
class | DelayedDirWatcher |
class | DirWatcher |
class | Dual |
class | FastReadWriteMutex |
class | HashCache |
class | HashMap |
struct | HashMapEqualTo |
class | HashSet |
struct | HashSetEqualTo |
class | ImGui_SDL |
class | Int_ |
class | IteratorRange |
class | ListMap |
struct | ListMapEqualTo |
class | ListSet |
struct | ListSetEqualTo |
class | MemMap |
class | MovementTracker |
class | Music |
class | Range |
class | ReadLock |
class | RotationTracker |
class | ScopeGuard |
class | ShaderMngr |
class | SlowReadWriteMutex |
class | StringInterner |
class | TextureMngr |
class | ThreadPool |
class | Timer |
struct | TupleArrayRef |
struct | TupleArrayRef< 0 > |
struct | Wav |
class | WriteLock |
Typedefs | |
using | DelayedDirWatcher_UP = std::unique_ptr< DelayedDirWatcher > |
using | ImageData = std::unique_ptr< void, std::function< void(void *)>> |
using | ImageLoader = std::function< ImageData(const char *path, int *width, int *height, int *comp, int req_comp)> |
using | CalcWidth = std::function< float(const std::string &text)> |
Functions | |
template<typename T > | |
constexpr Dual< T > | operator+ (const Dual< T > &left, const Dual< T > &right) |
template<typename T > | |
constexpr Dual< T > | operator+ (const Dual< T > &left, const T &right) |
template<typename T > | |
constexpr Dual< T > | operator+ (const T &left, const Dual< T > &right) |
template<typename T > | |
constexpr void | operator+= (Dual< T > &left, const Dual< T > &right) |
template<typename T > | |
constexpr void | operator+= (Dual< T > &left, const T &right) |
template<typename T > | |
constexpr Dual< T > | operator- (const Dual< T > &left, const Dual< T > &right) |
template<typename T > | |
constexpr Dual< T > | operator- (const Dual< T > &left, const T &right) |
template<typename T > | |
constexpr Dual< T > | operator- (const T &left, const Dual< T > &right) |
template<typename T > | |
constexpr void | operator-= (Dual< T > &left, const Dual< T > &right) |
template<typename T > | |
constexpr void | operator-= (Dual< T > &left, const T &right) |
template<typename T > | |
constexpr Dual< T > | operator* (const T &left, const Dual< T > &right) |
template<typename T > | |
constexpr Dual< T > | operator* (const Dual< T > &left, const T &right) |
template<typename T > | |
constexpr void | operator*= (Dual< T > &left, const T &right) |
template<typename T > | |
constexpr Dual< T > | operator* (const Dual< T > &left, const Dual< T > &right) |
template<typename T > | |
constexpr void | operator*= (Dual< T > &left, const Dual< T > &right) |
template<typename T > | |
constexpr Dual< T > | operator/ (const Dual< T > &left, const T &right) |
template<typename T > | |
constexpr void | operator/= (Dual< T > &left, const T &right) |
template<typename T > | |
constexpr Dual< T > | operator/ (const Dual< T > &left, const Dual< T > &right) |
template<typename T > | |
constexpr void | operator/= (Dual< T > &left, const Dual< T > &right) |
template<typename T > | |
constexpr Dual< T > | operator+ (const Dual< T > &operand) |
template<typename T > | |
constexpr Dual< T > | operator- (const Dual< T > &operand) |
template<typename T > | |
constexpr bool | operator== (const Dual< T > &left, const Dual< T > &right) |
template<typename T > | |
constexpr bool | operator!= (const Dual< T > &left, const Dual< T > &right) |
template<typename T > | |
constexpr bool | operator< (const Dual< T > &left, const Dual< T > &right) |
template<typename T > | |
constexpr bool | operator<= (const Dual< T > &left, const Dual< T > &right) |
template<typename T > | |
constexpr bool | operator>= (const Dual< T > &left, const Dual< T > &right) |
template<typename T > | |
constexpr bool | operator> (const Dual< T > &left, const Dual< T > &right) |
template<typename T > | |
std::ostream & | operator<< (std::ostream &os, const Dual< T > &x) |
template<typename Integer > | |
Range< Integer > | irange (Integer end) |
template<typename Integer > | |
Range< Integer > | irange (Integer begin, Integer end) |
template<typename Integer > | |
Range< Integer > | irange_inclusive (Integer first, Integer last) |
template<typename Integer = size_t, typename Container > | |
Range< Integer > | indices (const Container &container) |
template<typename Integer , typename Visitor > | |
void | repeat (Integer count, const Visitor &visitor) |
template<typename It > | |
auto | it_range (It begin, It end) |
template<typename Chr > | |
CStrRange< Chr > | cstr_range (Chr *str) |
std::vector< float > | marching_squares (size_t width, size_t height, const float *iso) |
float | calc_area (size_t num_line_segments, const float *xy) |
Calculate the area of one or several shapes from their outline, as returned by marching_squares. | |
template<class Fun > | |
ScopeGuard< Fun > | make_scope_guard (Fun f) |
gl::ProgramSource | load_shader_file (const std::string &shader_dir, const std::string &name) |
const char * | intern_string (const std::string &str) |
std::string | strprintfv (const char *format, va_list) |
std::string | strprintf (const char *format,...) |
ImageData | load_image_rgba (const ImageLoader &image_loader, const char *path, size_t *out_width, size_t *out_height) |
bool | write_tga (const char *path, size_t width, size_t height, const void *rgba_ptr, bool include_alpha) |
std::vector< uint8_t > | encode_tga (size_t width, size_t height, const void *rgba_ptr, bool include_alpha) |
As above, but returns the tga in memory. | |
template<typename Func , typename... Args> | |
bool | for_each_tuple (std::tuple< Args... > &tup, Func &&func) |
template<typename Func , typename... Args> | |
bool | for_each_tuple (const std::tuple< Args... > &tup, Func &&func) |
Wav | parse_wav (const void *wav_data, size_t size_bytes) |
std::vector< std::string > | word_wrap (const std::string &text, float max_width, const CalcWidth &calc_width) |
void | unit_test_word_wrap () |
Coroutine-ish feature implemented using a thread. Useful for implementing a script of some sort where a state-machine would be cumbersome. The coroutine (inner) thread is executed only when the owning (outer) thread is paused, and vice versa.
The coroutine has helper functions for waiting for a certain amount of time etc. To keep track of the time, a time delta must be supplied when polling a coroutine. This allows the library user to for instance slow down time by supplying smaller time deltas then the wall clock time.
Example usage can be found in examples/ folder.
std::vector<float> emilib::marching_squares | ( | size_t | width, |
size_t | height, | ||
const float * | iso | ||
) |
Approximate the iso-surface at threshold = 0. iso
is assumed row-major, width
* height
, with positive values meaning "outside". Returns a bunch of line segments as x0, y0, x1, y1. In a system where (0,0) is top left, the returned line segments will be in clock-wise order.