Almond.h 2.8 KB

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