aboutsummaryrefslogtreecommitdiffstats
path: root/test/test_utils.h
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2020-03-08 17:47:12 +0100
committerDavid Robillard <d@drobilla.net>2020-03-08 17:47:12 +0100
commitf1f50a738e10873c483b7425ae7da963114b7719 (patch)
treeefebbb6f25fbafebbdd4d4073b81743f04f9c782 /test/test_utils.h
parent63b748a6b2f1fa9db262ba15a60939109053556e (diff)
downloadpugl-f1f50a738e10873c483b7425ae7da963114b7719.tar.gz
pugl-f1f50a738e10873c483b7425ae7da963114b7719.tar.bz2
pugl-f1f50a738e10873c483b7425ae7da963114b7719.zip
Split graphical utilities out from test_utils.h
Diffstat (limited to 'test/test_utils.h')
-rw-r--r--test/test_utils.h150
1 files changed, 1 insertions, 149 deletions
diff --git a/test/test_utils.h b/test/test_utils.h
index aebe33e..6a2a644 100644
--- a/test/test_utils.h
+++ b/test/test_utils.h
@@ -16,17 +16,13 @@
#include "pugl/pugl.h"
-#include <math.h>
#include <stdarg.h>
+#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
typedef struct {
- double lastReportTime;
-} PuglFpsPrinter;
-
-typedef struct {
int samples;
int doubleBuffer;
bool continuous;
@@ -37,131 +33,6 @@ typedef struct {
bool errorChecking;
} PuglTestOptions;
-typedef float vec4[4];
-typedef vec4 mat4[4];
-
-// clang-format off
-
-static const float cubeStripVertices[] = {
- -1.0f, 1.0f, 1.0f, // Front top left
- 1.0f, 1.0f, 1.0f, // Front top right
- -1.0f, -1.0f, 1.0f, // Front bottom left
- 1.0f, -1.0f, 1.0f, // Front bottom right
- 1.0f, -1.0f, -1.0f, // Back bottom right
- 1.0f, 1.0f, 1.0f, // Front top right
- 1.0f, 1.0f, -1.0f, // Back top right
- -1.0f, 1.0f, 1.0f, // Front top left
- -1.0f, 1.0f, -1.0f, // Back top left
- -1.0f, -1.0f, 1.0f, // Front bottom left
- -1.0f, -1.0f, -1.0f, // Back bottom left
- 1.0f, -1.0f, -1.0f, // Back bottom right
- -1.0f, 1.0f, -1.0f, // Back top left
- 1.0f, 1.0f, -1.0f // Back top right
-};
-
-static const float cubeFrontLineLoop[] = {
- -1.0f, 1.0f, 1.0f, // Front top left
- 1.0f, 1.0f, 1.0f, // Front top right
- 1.0f, -1.0f, 1.0f, // Front bottom right
- -1.0f, -1.0f, 1.0f, // Front bottom left
-};
-
-static const float cubeBackLineLoop[] = {
- -1.0f, 1.0f, -1.0f, // Back top left
- 1.0f, 1.0f, -1.0f, // Back top right
- 1.0f, -1.0f, -1.0f, // Back bottom right
- -1.0f, -1.0f, -1.0f, // Back bottom left
-};
-
-static const float cubeSideLines[] = {
- -1.0f, 1.0f, 1.0f, // Front top left
- -1.0f, 1.0f, -1.0f, // Back top left
-
- -1.0f, -1.0f, 1.0f, // Front bottom left
- -1.0f, -1.0f, -1.0f, // Back bottom left
-
- 1.0f, 1.0f, 1.0f, // Front top right
- 1.0f, 1.0f, -1.0f, // Back top right
-
- 1.0f, -1.0f, 1.0f, // Front bottom right
- 1.0f, -1.0f, -1.0f, // Back bottom right
-};
-
-// clang-format on
-
-static inline void
-mat4Identity(mat4 m)
-{
- for (int c = 0; c < 4; ++c) {
- for (int r = 0; r < 4; ++r) {
- m[c][r] = c == r ? 1.0f : 0.0f;
- }
- }
-}
-
-static inline void
-mat4Translate(mat4 m, const float x, const float y, const float z)
-{
- m[3][0] = x;
- m[3][1] = y;
- m[3][2] = z;
-}
-
-static inline void
-mat4Mul(mat4 m, mat4 a, mat4 b)
-{
- for (int c = 0; c < 4; ++c) {
- for (int r = 0; r < 4; ++r) {
- m[c][r] = 0.0f;
- for (int k = 0; k < 4; ++k) {
- m[c][r] += a[k][r] * b[c][k];
- }
- }
- }
-}
-
-static inline void
-mat4Ortho(mat4 m,
- const float l,
- const float r,
- const float b,
- const float t,
- const float n,
- const float f)
-{
- m[0][0] = 2.0f / (r - l);
- m[0][1] = m[0][2] = m[0][3] = 0.0f;
-
- m[1][1] = 2.0f / (t - b);
- m[1][0] = m[1][2] = m[1][3] = 0.0f;
-
- m[2][2] = -2.0f / (f - n);
- m[2][0] = m[2][1] = m[2][3] = 0.0f;
-
- m[3][0] = -(r + l) / (r - l);
- m[3][1] = -(t + b) / (t - b);
- m[3][2] = -(f + n) / (f - n);
- m[3][3] = 1.0f;
-}
-
-/** Calculate a projection matrix for a given perspective. */
-static inline void
-perspective(float* m, float fov, float aspect, float zNear, float zFar)
-{
- const float h = tanf(fov);
- const float w = h / aspect;
- const float depth = zNear - zFar;
- const float q = (zFar + zNear) / depth;
- const float qn = 2 * zFar * zNear / depth;
-
- // clang-format off
- m[0] = w; m[1] = 0; m[2] = 0; m[3] = 0;
- m[4] = 0; m[5] = h; m[6] = 0; m[7] = 0;
- m[8] = 0; m[9] = 0; m[10] = q; m[11] = -1;
- m[12] = 0; m[13] = 0; m[14] = qn; m[15] = 0;
- // clang-format on
-}
-
static inline int
logError(const char* fmt, ...)
{
@@ -339,22 +210,3 @@ puglParseTestOptions(int* pargc, char*** pargv)
return opts;
}
-
-static inline void
-puglPrintFps(const PuglWorld* world,
- PuglFpsPrinter* printer,
- unsigned* const framesDrawn)
-{
- const double thisTime = puglGetTime(world);
- if (thisTime > printer->lastReportTime + 5) {
- const double fps = *framesDrawn / (thisTime - printer->lastReportTime);
- fprintf(stderr,
- "%u frames in %.0f seconds = %.3f FPS\n",
- *framesDrawn,
- thisTime - printer->lastReportTime,
- fps);
-
- printer->lastReportTime = thisTime;
- *framesDrawn = 0;
- }
-}