GUI: add nibble mode to randomize
This commit is contained in:
		
							parent
							
								
									de604bdf01
								
							
						
					
					
						commit
						7971b7323b
					
				|  | @ -3226,7 +3226,7 @@ void FurnaceGUI::doScale(float top) { | |||
|   makeUndo(GUI_UNDO_PATTERN_SCALE); | ||||
| } | ||||
| 
 | ||||
| void FurnaceGUI::doRandomize(int bottom, int top) { | ||||
| void FurnaceGUI::doRandomize(int bottom, int top, bool mode) { | ||||
|   finishSelection(); | ||||
|   prepareUndo(GUI_UNDO_PATTERN_RANDOMIZE); | ||||
| 
 | ||||
|  | @ -3247,10 +3247,21 @@ void FurnaceGUI::doRandomize(int bottom, int top) { | |||
|           absoluteTop=e->getMaxVolumeChan(iCoarse); | ||||
|         } | ||||
|         for (int j=selStart.y; j<=selEnd.y; j++) { | ||||
|           int value=0; | ||||
|           int value2=0; | ||||
|           if (top-bottom<=0) { | ||||
|             pat->data[j][iFine+1]=MIN(absoluteTop,bottom); | ||||
|             value=MIN(absoluteTop,bottom); | ||||
|             value2=MIN(absoluteTop,bottom); | ||||
|           } else { | ||||
|             pat->data[j][iFine+1]=MIN(absoluteTop,bottom+(rand()%(top-bottom))); | ||||
|             value=MIN(absoluteTop,bottom+(rand()%(top-bottom+1))); | ||||
|             value2=MIN(absoluteTop,bottom+(rand()%(top-bottom+1))); | ||||
|           } | ||||
|           if (mode) { | ||||
|             value&=15; | ||||
|             value2&=15; | ||||
|             pat->data[j][iFine+1]=value|(value2<<4); | ||||
|           } else { | ||||
|             pat->data[j][iFine+1]=value; | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|  | @ -4883,17 +4894,34 @@ void FurnaceGUI::editOptions(bool topMenu) { | |||
|   if (ImGui::BeginMenu("randomize...")) { | ||||
|     if (ImGui::InputInt("Minimum",&randomizeMin,1,1)) { | ||||
|       if (randomizeMin<0) randomizeMin=0; | ||||
|       if (randomizeMin>255) randomizeMin=255; | ||||
|       if (randomMode) { | ||||
|         if (randomizeMin>15) randomizeMin=15; | ||||
|       } else { | ||||
|         if (randomizeMin>255) randomizeMin=255; | ||||
|       } | ||||
|       if (randomizeMin>randomizeMax) randomizeMin=randomizeMax; | ||||
|     } | ||||
|     if (ImGui::InputInt("Maximum",&randomizeMax,1,1)) { | ||||
|       if (randomizeMax<0) randomizeMax=0; | ||||
|       if (randomizeMax<randomizeMin) randomizeMax=randomizeMin; | ||||
|       if (randomizeMax>255) randomizeMax=255; | ||||
|       if (randomMode) { | ||||
|         if (randomizeMax>15) randomizeMax=15; | ||||
|       } else { | ||||
|         if (randomizeMax>255) randomizeMax=255; | ||||
|       } | ||||
|     } | ||||
|     if (ImGui::Checkbox("Nibble mode",&randomMode)) { | ||||
|       if (randomMode) { | ||||
|         if (randomizeMin>15) randomizeMin=15; | ||||
|         if (randomizeMax>15) randomizeMax=15; | ||||
|       } else { | ||||
|         if (randomizeMin>255) randomizeMin=255; | ||||
|         if (randomizeMax>255) randomizeMax=255; | ||||
|       } | ||||
|     } | ||||
|     // TODO: add an option to set effect to specific value?
 | ||||
|     if (ImGui::Button("Randomize")) { | ||||
|       doRandomize(randomizeMin,randomizeMax); | ||||
|       doRandomize(randomizeMin,randomizeMax,randomMode); | ||||
|       ImGui::CloseCurrentPopup(); | ||||
|     } | ||||
|     ImGui::EndMenu(); | ||||
|  | @ -6717,6 +6745,7 @@ FurnaceGUI::FurnaceGUI(): | |||
|   fadeMax(255), | ||||
|   scaleMax(100.0f), | ||||
|   fadeMode(false), | ||||
|   randomMode(false), | ||||
|   oldOrdersLen(0) { | ||||
| 
 | ||||
|   // octave 1
 | ||||
|  |  | |||
|  | @ -691,7 +691,7 @@ class FurnaceGUI { | |||
|   int dummyRows, demandX; | ||||
|   int transposeAmount, randomizeMin, randomizeMax, fadeMin, fadeMax; | ||||
|   float scaleMax; | ||||
|   bool fadeMode; | ||||
|   bool fadeMode, randomMode; | ||||
| 
 | ||||
|   int oldOrdersLen; | ||||
|   DivOrders oldOrders; | ||||
|  | @ -766,7 +766,7 @@ class FurnaceGUI { | |||
|   void doFade(int p0, int p1, bool mode); | ||||
|   void doInvertValues(); | ||||
|   void doScale(float top); | ||||
|   void doRandomize(int bottom, int top); | ||||
|   void doRandomize(int bottom, int top, bool mode); | ||||
|   void doFlip(); | ||||
|   void doCollapse(int divider); | ||||
|   void doExpand(int multiplier); | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 tildearrow
						tildearrow