1
0

Generators.h 875 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #ifndef MANDEL_GENERATORS_H
  2. #define MANDEL_GENERATORS_H
  3. #include "MandelUtil.h"
  4. #include <vector>
  5. #include <utility>
  6. namespace mnd
  7. {
  8. class Generator;
  9. class AdaptiveGenerator;
  10. }
  11. class mnd::Generator
  12. {
  13. public:
  14. Generator(void) = default;
  15. virtual ~Generator(void);
  16. Generator(const Generator&) = delete;
  17. Generator& operator=(const Generator&) = delete;
  18. Generator(Generator&&) = default;
  19. Generator& operator=(Generator&&) = default;
  20. virtual void generate(const MandelInfo& info, float* data) = 0;
  21. };
  22. class mnd::AdaptiveGenerator : public Generator
  23. {
  24. std::vector<std::pair<double, Generator*>> generators;
  25. public:
  26. AdaptiveGenerator(Generator* floatGen, Generator* doubleGen);
  27. virtual ~AdaptiveGenerator(void) = default;
  28. virtual void generate(const MandelInfo& info, float* data);
  29. };
  30. #endif // MANDEL_GENERATORS_H