2022-03-21 18:34:43 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Furnace  Tracker  -  multi - system  chiptune  tracker 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Copyright  ( C )  2021 - 2022  tildearrow  and  contributors 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  program  is  free  software ;  you  can  redistribute  it  and / or  modify 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  it  under  the  terms  of  the  GNU  General  Public  License  as  published  by 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  the  Free  Software  Foundation ;  either  version  2  of  the  License ,  or 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  ( at  your  option )  any  later  version . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  program  is  distributed  in  the  hope  that  it  will  be  useful , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  but  WITHOUT  ANY  WARRANTY ;  without  even  the  implied  warranty  of 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  MERCHANTABILITY  or  FITNESS  FOR  A  PARTICULAR  PURPOSE .   See  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  GNU  General  Public  License  for  more  details . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  You  should  have  received  a  copy  of  the  GNU  General  Public  License  along 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  with  this  program ;  if  not ,  write  to  the  Free  Software  Foundation ,  Inc . , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  51  Franklin  Street ,  Fifth  Floor ,  Boston ,  MA  02110 - 1301  USA . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-03-21 17:34:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "gui.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "plot_nolerp.h" 
  
						 
					
						
							
								
									
										
										
										
											2022-04-02 19:22:06 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "IconsFontAwesome4.h" 
  
						 
					
						
							
								
									
										
										
										
											2022-03-21 17:34:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "misc/cpp/imgui_stdlib.h" 
  
						 
					
						
							
								
									
										
										
										
											2022-03-30 01:28:49 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  <imgui.h> 
  
						 
					
						
							
								
									
										
										
										
											2022-03-21 17:34:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  FurnaceGUI : : drawWaveEdit ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( nextWindow = = GUI_WINDOW_WAVE_EDIT )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    waveEditOpen = true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ImGui : : SetNextWindowFocus ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    nextWindow = GUI_WINDOW_NOTHING ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! waveEditOpen )  return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  float  wavePreview [ 256 ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-16 21:51:53 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  ImGui : : SetNextWindowSizeConstraints ( ImVec2 ( 300.0f * dpiScale , 300.0f * dpiScale ) , ImVec2 ( scrW * dpiScale , scrH * dpiScale ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-21 17:34:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  if  ( ImGui : : Begin ( " Wavetable Editor " , & waveEditOpen , settings . allowEditDocking ? 0 : ImGuiWindowFlags_NoDocking ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( curWave < 0  | |  curWave > = ( int ) e - > song . wave . size ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ImGui : : Text ( " no wavetable selected " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-02 19:22:06 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      ImGui : : SetNextItemWidth ( 80.0f * dpiScale ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ImGui : : InputInt ( " ##CurWave " , & curWave , 1 , 1 ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( curWave < 0 )  curWave = 0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( curWave > = ( int ) e - > song . wave . size ( ) )  curWave = e - > song . wave . size ( ) - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ImGui : : SameLine ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // TODO: load replace
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ImGui : : Button ( ICON_FA_FOLDER_OPEN  " ##WELoad " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        doAction ( GUI_ACTION_WAVE_LIST_OPEN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ImGui : : SameLine ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ImGui : : Button ( ICON_FA_FLOPPY_O  " ##WESave " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        doAction ( GUI_ACTION_WAVE_LIST_SAVE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ImGui : : SameLine ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      
							 
						 
					
						
							
								
									
										
										
										
											2022-03-21 17:34:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      DivWavetable *  wave = e - > song . wave [ curWave ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-16 21:51:53 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! settings . waveLayout ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ImGui : : Text ( " Width " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ImGui : : IsItemHovered ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          ImGui : : SetTooltip ( " use a width of: \n - any on Amiga/N163 \n - 32 on Game Boy, PC Engine and WonderSwan \n - 64 on FDS \n - 128 on X1-010 \n any other widths will be scaled during playback. " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ImGui : : SameLine ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ImGui : : SetNextItemWidth ( 128.0f * dpiScale ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ImGui : : InputInt ( " ##_WTW " , & wave - > len , 1 , 2 ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( wave - > len > 256 )  wave - > len = 256 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( wave - > len < 1 )  wave - > len = 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          e - > notifyWaveChange ( curWave ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( wavePreviewOn )  e - > previewWave ( curWave , wavePreviewNote ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          MARK_MODIFIED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ImGui : : SameLine ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ImGui : : Text ( " Height " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ImGui : : IsItemHovered ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          ImGui : : SetTooltip ( " use a height of: \n - 15 for Game Boy, WonderSwan, X1-010 Envelope shape and N163 \n - 31 for PC Engine \n - 63 for FDS \n - 255 for X1-010 \n any other heights will be scaled during playback. " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ImGui : : SameLine ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ImGui : : SetNextItemWidth ( 128.0f * dpiScale ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ImGui : : InputInt ( " ##_WTH " , & wave - > max , 1 , 2 ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( wave - > max > 255 )  wave - > max = 255 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( wave - > max < 1 )  wave - > max = 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          e - > notifyWaveChange ( curWave ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          MARK_MODIFIED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-21 17:34:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-30 01:28:49 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      ImGui : : SameLine ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ImGui : : RadioButton ( " Dec " , ! waveHex ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        waveHex = false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ImGui : : SameLine ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ImGui : : RadioButton ( " Hex " , waveHex ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        waveHex = true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-16 21:51:53 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( settings . waveLayout ) { 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-17 11:38:28 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ImGui : : BeginTable ( " WaveProps " , 2 , ImGuiTableFlags_SizingStretchSame ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-16 21:51:53 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          ImGui : : TableNextRow ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          ImGui : : TableNextColumn ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          ImGui : : Text ( " Width " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( ImGui : : IsItemHovered ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ImGui : : SetTooltip ( " use a width of: \n - any on Amiga/N163 \n - 32 on Game Boy, PC Engine and WonderSwan \n - 64 on FDS \n - 128 on X1-010 \n any other widths will be scaled during playback. " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          ImGui : : SameLine ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          ImGui : : SetNextItemWidth ( ImGui : : GetContentRegionAvail ( ) . x ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( ImGui : : InputInt ( " ##_WTW " , & wave - > len , 1 , 2 ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( wave - > len > 256 )  wave - > len = 256 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( wave - > len < 1 )  wave - > len = 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            e - > notifyWaveChange ( curWave ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( wavePreviewOn )  e - > previewWave ( curWave , wavePreviewNote ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            MARK_MODIFIED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          ImGui : : TableNextColumn ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          ImGui : : SameLine ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          ImGui : : Text ( " Height " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( ImGui : : IsItemHovered ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ImGui : : SetTooltip ( " use a height of: \n - 15 for Game Boy, WonderSwan, X1-010 Envelope shape and N163 \n - 31 for PC Engine \n - 63 for FDS \n - 255 for X1-010 \n any other heights will be scaled during playback. " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          ImGui : : SameLine ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          ImGui : : SetNextItemWidth ( ImGui : : GetContentRegionAvail ( ) . x ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( ImGui : : InputInt ( " ##_WTH " , & wave - > max , 1 , 2 ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( wave - > max > 255 )  wave - > max = 255 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( wave - > max < 1 )  wave - > max = 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            e - > notifyWaveChange ( curWave ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            MARK_MODIFIED ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          ImGui : : EndTable ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-03-21 17:34:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      for  ( int  i = 0 ;  i < wave - > len ;  i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( wave - > data [ i ] > wave - > max )  wave - > data [ i ] = wave - > max ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        wavePreview [ i ] = wave - > data [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( wave - > len > 0 )  wavePreview [ wave - > len ] = wave - > data [ wave - > len - 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ImGui : : SetNextItemWidth ( ImGui : : GetContentRegionAvail ( ) . x ) ;  // wavetable text input size found here
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ImGui : : InputText ( " ##MMLWave " , & mmlStringW ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-30 01:28:49 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        decodeMMLStrW ( mmlStringW , wave - > data , wave - > len , wave - > max , waveHex ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-21 17:34:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! ImGui : : IsItemActive ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-30 01:28:49 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        encodeMMLStr ( mmlStringW , wave - > data , wave - > len , - 1 , - 1 , waveHex ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-21 17:34:19 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ImGui : : PushStyleVar ( ImGuiStyleVar_FramePadding , ImVec2 ( 0.0f , 0.0f ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ImVec2  contentRegion = ImGui : : GetContentRegionAvail ( ) ;  // wavetable graph size determined here
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ImGui : : GetContentRegionAvail ( ) . y  >  ( ImGui : : GetContentRegionAvail ( ) . x  /  2.0f ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        contentRegion = ImVec2 ( ImGui : : GetContentRegionAvail ( ) . x , ImGui : : GetContentRegionAvail ( ) . x  /  2.0f ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      PlotNoLerp ( " ##Waveform " , wavePreview , wave - > len + 1 , 0 , NULL , 0 , wave - > max , contentRegion ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ImGui : : IsItemClicked ( ImGuiMouseButton_Left ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        waveDragStart = ImGui : : GetItemRectMin ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        waveDragAreaSize = contentRegion ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        waveDragMin = 0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        waveDragMax = wave - > max ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        waveDragLen = wave - > len ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        waveDragActive = true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        waveDragTarget = wave - > data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        processDrags ( ImGui : : GetMousePos ( ) . x , ImGui : : GetMousePos ( ) . y ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        e - > notifyWaveChange ( curWave ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        modified = true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ImGui : : PopStyleVar ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ImGui : : IsWindowFocused ( ImGuiFocusedFlags_ChildWindows ) )  curWindow = GUI_WINDOW_WAVE_EDIT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ImGui : : End ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}