Almond.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #pragma once
  2. #include <QtWidgets/QMainWindow>
  3. #include "ui_Almond.h"
  4. #include <Mandel.h>
  5. #include "MandelWidget.h"
  6. #include "BackgroundTask.h"
  7. #include "exportdialogs.h"
  8. #include "gradientchoosedialog.h"
  9. #include "choosegenerators.h"
  10. #include "customgenerator.h"
  11. //#include "benchmarkdialog.h"
  12. #include <memory>
  13. struct ViewState
  14. {
  15. mnd::MandelViewport viewport;
  16. mnd::MandelGenerator* generator;
  17. };
  18. enum ViewType
  19. {
  20. MANDELBROT,
  21. JULIA,
  22. CUSTOM,
  23. };
  24. class Almond : public QMainWindow
  25. {
  26. Q_OBJECT
  27. private:
  28. mnd::MandelContext mandelContext;
  29. QThreadPool backgroundTasks;
  30. bool stoppingBackgroundTasks = false;
  31. bool fullscreenMode = false;
  32. QWidget* cw;
  33. public:
  34. std::unique_ptr<MandelWidget> mw;
  35. private:
  36. //std::unique_ptr<BenchmarkDialog> benchmarkDialog;
  37. std::unique_ptr<CustomGenerator> customGeneratorDialog;
  38. GradientChooseDialog gcd;
  39. std::vector<std::unique_ptr<FractalDef>> customGenerators;
  40. FractalDef* currentCustom;
  41. mnd::AdaptiveGenerator* customGenerator;
  42. std::vector<std::unique_ptr<mnd::AdaptiveGenerator>> adjustedGenerators;
  43. ViewType currentView;
  44. mnd::MandelViewport mandelViewSave;
  45. mnd::MandelViewport customViewSave;
  46. mnd::AdaptiveGenerator* mandelGenerator;
  47. public:
  48. mnd::MandelGenerator* currentGenerator;
  49. public:
  50. Almond(QWidget *parent = Q_NULLPTR);
  51. ~Almond(void);
  52. void submitBackgroundTask(BackgroundTask* task);
  53. void stopBackgroundTask();
  54. bool eventFilter(QObject *target, QEvent *event);
  55. public slots:
  56. void toggleFullscreen(void);
  57. private slots:
  58. void on_zoom_out_clicked();
  59. void on_zoom_in_clicked();
  60. void on_maxIterations_editingFinished();
  61. void on_chooseGradient_clicked();
  62. void on_exportVideo_clicked();
  63. void on_smooth_stateChanged(int arg1);
  64. void on_exportImage_clicked();
  65. void on_resetZoom_clicked();
  66. void on_displayInfo_stateChanged(int arg1);
  67. void on_chooseGenerator_clicked();
  68. void backgroundTaskFinished(bool, QString message);
  69. void backgroundTaskProgress(float percentage);
  70. void pointSelected(mnd::Real x, mnd::Real y);
  71. void on_wMandel_toggled(bool checked);
  72. void saveView(void);
  73. void setViewType(ViewType v);
  74. void on_wMandel_clicked();
  75. void on_radioButton_toggled(bool checked);
  76. void on_radioButton_2_toggled(bool checked);
  77. void on_createCustom_clicked();
  78. void on_cancelProgress_clicked();
  79. private:
  80. Ui::AlmondClass ui;
  81. };