VideoRecipe.h 706 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #ifndef ALMOND_VIDEORECIPE_H
  2. #define ALMOND_VIDEORECIPE_H
  3. #include <optional>
  4. #include "MandelUtil.h"
  5. #include "Gradient.h"
  6. namespace alm
  7. {
  8. enum class Interpolation
  9. {
  10. NONE,
  11. LINEAR,
  12. SINE
  13. };
  14. template<typename T>
  15. struct Change
  16. {
  17. T newValue;
  18. Interpolation interpolation;
  19. };
  20. template<typename T>
  21. using MaybeChange = std::optional<Change<T>>;
  22. struct VideoPoint;
  23. struct VideoRecipe;
  24. }
  25. struct alm::VideoPoint
  26. {
  27. MaybeChange<int> maxIterations;
  28. MaybeChange<mnd::MandelViewport> view;
  29. MaybeChange<Gradient> gradient;
  30. };
  31. class alm::VideoRecipe
  32. {
  33. int width;
  34. int height;
  35. };
  36. #endif // ALMOND_VIDEORECIPE_H