diff options
Diffstat (limited to 'src/libsldj')
-rw-r--r-- | src/libsldj/Makefile | 11 | ||||
-rw-r--r-- | src/libsldj/util.c | 2 | ||||
-rw-r--r-- | src/libsldj/util.h | 68 |
3 files changed, 80 insertions, 1 deletions
diff --git a/src/libsldj/Makefile b/src/libsldj/Makefile new file mode 100644 index 0000000..fc15314 --- /dev/null +++ b/src/libsldj/Makefile @@ -0,0 +1,11 @@ +TARGET = libsldj.so +SOURCES = $(shell find -name "*.c") +OBJECTS = $(SOURCES:.c=.o) + +%.o: %.c + $(CC) -c -fPIC -o $@ $< +$(TARGET): $(OBJECTS) + $(CC) -shared -o $(TARGET) $(OBJECTS) +clean: + rm *.o + rm $(TARGET) diff --git a/src/libsldj/util.c b/src/libsldj/util.c index 61def55..b7e445c 100644 --- a/src/libsldj/util.c +++ b/src/libsldj/util.c @@ -1,2 +1,2 @@ -#include "libsldj/util.h" +#include "util.h" diff --git a/src/libsldj/util.h b/src/libsldj/util.h new file mode 100644 index 0000000..566ba8d --- /dev/null +++ b/src/libsldj/util.h @@ -0,0 +1,68 @@ +#include <stdio.h> +#include <stdlib.h> +#include <stdint.h> +#include <math.h> + +#ifndef UTIL_H +#define UTIL_H + +#define SET_BIT(b, n) (b | (0x1 << n)) +#define CLEAR_BIT(b, n) (b & ~(0x1 << n)) +#define IS_BIT_SET(b, n) ((b >> n) & 0x1) +#define TOGGLE_BIT(b, n) (b ^ (0x1 << n)) +#define HAS_FLAG(v, f) ((v & f) == f) + +// Fast math macros. +#define SLDJ_SQRT(number) sldjSqrtTable[(uint16_t)(number)] + +#define SLDJ_SIN(number) sldjSinTable[(uint16_t)(number)] +#define SLDJ_COS(number) sldjCosTable[(uint16_t)(number)] +#define SLDJ_TAN(number) sldjTanTable[(uint16_t)(number)] + +#define SLDJ_HYPOT2(x, y) (SLDJ_SQRT(x * x + y * y)) +#define SLDJ_HYPOT3(x, y, z) (SLDJ_SQRT(x * x + y * y + z * z)) + +#define SLDJ_RANDOM16(seed) (seed = (75 * seed + 74) % 65537) +#define SLDJ_RANDOM32(seed) (seed = (1664525 * seed + 1013904223) % 4294967296) + +// Stuff stolen from raylib/raymath +#ifndef RL_COLOR_TYPE +#define RL_COLOR_TYPE +typedef struct Color { + unsigned char r; + unsigned char g; + unsigned char b; + unsigned char a; +} Color; +#endif + +#ifndef PI + #define PI 3.14159265358979323846f +#endif + +#ifndef DEG2RAD + #define DEG2RAD (PI/180.0f) +#endif + +#ifndef RAD2DEG + #define RAD2DEG (180.0f/PI) +#endif + +// Used for sending information to a scanner. +typedef struct SldjContext { + uint16_t viewportWidth; + uint16_t viewportHeight; + uint8_t targetFps; + uint16_t xCount; + uint16_t yCount; +} SldjContext; + +// Tables. +extern float sldjSqrtTable[65536]; + +extern float sldjSinTable[361]; +extern float sldjCosTable[361]; +extern float sldjTanTable[361]; + +#endif + |