spline.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #ifndef spline_h
  2. #define spline_h
  3. #include "cengine.h"
  4. #define MAX_SPLINE_POINTS 20
  5. typedef struct {
  6. int num_points;
  7. float y0d;
  8. float ynd;
  9. float x0d;
  10. float xnd;
  11. float x[MAX_SPLINE_POINTS];
  12. float y[MAX_SPLINE_POINTS];
  13. float yd[MAX_SPLINE_POINTS];
  14. float xd[MAX_SPLINE_POINTS];
  15. } spline;
  16. spline* spline_new();
  17. void spline_delete(spline* s);
  18. void spline_add_point(spline* s, vec2 p);
  19. vec2 spline_get_point(spline* s, int i);
  20. void spline_set_point(spline* s, int i, vec2 p);
  21. void spline_update(spline* s);
  22. void spline_print(spline* s);
  23. float spline_get_x(spline* s, float y);
  24. float spline_get_y(spline* s, float x);
  25. float spline_get_x_between(spline* s, int low, int high, float y);
  26. float spline_get_y_between(spline* s, int low, int high, float x);
  27. typedef struct {
  28. spline* rgb_spline;
  29. spline* r_spline;
  30. spline* g_spline;
  31. spline* b_spline;
  32. spline* a_spline;
  33. } color_curves;
  34. color_curves* color_curves_load(char* filename);
  35. void color_curves_delete(color_curves* cc);
  36. void color_curves_write_lut(color_curves* cc, char* filename);
  37. vec3 color_curves_map(color_curves* cc, vec3 in);
  38. #endif