| 
					
				 | 
			
			
				@@ -15,13 +15,16 @@ Almond::Almond(QWidget* parent) : 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     mw = std::make_unique<MandelWidget>(mandelContext, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                         &mandelContext.getDefaultGenerator(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                         ui.centralWidget); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    customGeneratorDialog = std::make_unique<CustomGenerator>(mandelContext); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    customGenerator = nullptr; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    customViewSave = mnd::MandelViewport::centerView(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     on_maxIterations_editingFinished(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     mw->setSmoothColoring(ui.smooth->isChecked()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     currentView = MANDELBROT; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    mandelGeneratorSave = &mandelContext.getDefaultGenerator(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    mandelGenerator = &mandelContext.getDefaultGenerator(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     mandelViewSave = mw->getViewport(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     QObject::connect(mw.get(), &MandelWidget::pointSelected, this, &Almond::pointSelected); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -151,7 +154,12 @@ void Almond::on_exportImage_clicked() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void Almond::on_resetZoom_clicked() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    mw->setViewport(mnd::MandelViewport::standardView()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (currentView == MANDELBROT) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        mw->setViewport(mnd::MandelViewport::standardView()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        mw->setViewport(mnd::MandelViewport::centerView()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -168,17 +176,18 @@ void Almond::on_chooseGenerator_clicked() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     generatorsDialog->exec(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (generatorsDialog->getChosenGenerator()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        mandelGeneratorSave = generatorsDialog->getChosenGenerator(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        mandelGenerator = generatorsDialog->getChosenGenerator(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        mandelGeneratorSave = &mandelContext.getDefaultGenerator(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        mandelGenerator = &mandelContext.getDefaultGenerator(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //this->currentView = MANDELBROT; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    this->mw->setGenerator(mandelGeneratorSave); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this->mw->setGenerator(mandelGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //this->mw->getMandelInfo().julia = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //printf("dialog executed\n"); fflush(stdout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void Almond::on_selectPoint_clicked() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (currentView == MANDELBROT) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -190,9 +199,7 @@ void Almond::on_selectPoint_clicked() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void Almond::pointSelected(mnd::Real x, mnd::Real y) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (currentView != JULIA) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //auto& gen = mandelContext.getJuliaGenerator(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        mandelViewSave = mw->getViewport(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //this->mw->setGenerator(&gen); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        saveView(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this->mw->setViewport(mnd::MandelViewport::centerView()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this->mw->setJuliaPos(x, y); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this->mw->getMandelInfo().julia = true; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -211,3 +218,78 @@ void Almond::on_viewMandelbrot_clicked() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         currentView = MANDELBROT; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void Almond::on_groupBox_toggled(bool arg1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    printf("arg1: %i\n", int(arg1)); fflush(stdout); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void Almond::on_wMandel_clicked() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void Almond::saveView() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (currentView == MANDELBROT) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        mandelViewSave = mw->getViewport(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    else if (currentView == CUSTOM) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        customViewSave = mw->getViewport(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void Almond::on_wMandel_toggled(bool checked) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    saveView(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (checked) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        currentGenerator = mandelGenerator; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        emit this->mw->stopSelectingPoint(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this->mw->setViewport(mandelViewSave); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this->mw->setGenerator(currentGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this->mw->getMandelInfo().julia = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this->mw->clearAll(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        currentView = MANDELBROT; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void Almond::on_radioButton_toggled(bool checked) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    saveView(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (checked) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (currentView == MANDELBROT) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            emit this->mw->selectPoint(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            currentView = MANDELBROT; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            currentGenerator = mandelGenerator; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this->mw->setGenerator(currentGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this->mw->setViewport(mandelViewSave); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this->mw->getMandelInfo().julia = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this->mw->clearAll(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            emit this->mw->selectPoint(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void Almond::on_radioButton_2_toggled(bool checked) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    saveView(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (checked) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (customGenerator == nullptr) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            customGeneratorDialog->exec(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (auto* frac = customGeneratorDialog->getLastCompiled()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                customGenerator = frac->gc.cpuGenerators[0].get(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (customGenerator != nullptr) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            currentGenerator = customGenerator; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this->mw->setGenerator(currentGenerator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            emit this->mw->stopSelectingPoint(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this->mw->setViewport(customViewSave); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this->mw->getMandelInfo().julia = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this->mw->clearAll(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            currentView = CUSTOM; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |