/*****************************************************************************\
     Snes9x - Portable Super Nintendo Entertainment System (TM) emulator.
                This file is licensed under the Snes9x License.
   For further information, consult the LICENSE file in the root directory.
\*****************************************************************************/

/***********************************************************************************
  SNES9X for Mac OS (c) Copyright John Stiles

  Snes9x for Mac OS X

  (c) Copyright 2001 - 2011  zones
  (c) Copyright 2002 - 2005  107
  (c) Copyright 2002         PB1400c
  (c) Copyright 2004         Alexander and Sander
  (c) Copyright 2004 - 2005  Steven Seeger
  (c) Copyright 2005         Ryan Vogt
  (c) Copyright 2019         Michael Donald Buckley
 ***********************************************************************************/


#ifndef _mac_musicbox_h_
#define _mac_musicbox_h_

#define	kMBXSoundEmulation	1
#define	kMBXWholeEmulation	2

@interface MusicBoxController : NSObject
{
	IBOutlet NSWindow	*window;
	IBOutlet id	gametitle;
	IBOutlet id	disclosure;
	IBOutlet id	rewind;
	IBOutlet id	indicator;
	IBOutlet id	led;

	float		mbxClosedHeight,
				mbxOpenedHeight;

	NSTimer		*timer;
	pthread_t	mbxThread;
}

- (id) init;
- (void) dealloc;
- (void) windowWillClose: (NSNotification *) aNotification;
- (NSWindow *) window;
- (IBAction) handlePauseButton: (id) sender;
- (IBAction) handleRewindButton: (id) sender;
- (IBAction) handleEffectButton: (id) sender;
- (IBAction) handleChannelButton: (id) sender;
- (IBAction) handleDisclosureButton: (id) sender;
- (void) updateIndicator: (NSTimer *) aTimer;

@end

@interface MusicBoxIndicatorView : NSView
{
	float		mbxOffsetX,
				mbxOffsetY,
				mbxBarWidth,
				mbxBarHeight,
				mbxBarSpace,
				mbxLRSpace,
				mbxRightBarX,
				yyscale;

	float		mbxViewWidth,
				mbxViewHeight,
				mbxMarginX,
				mbxMarginY;

	short		prevLMax[8],
				prevRMax[8],
				prevLVol[8],
				prevRVol[8];

	long long	barTimeL[8],
				barTimeR[8];
}

- (id) initWithFrame: (NSRect) frame;
- (void) drawRect: (NSRect) rect;

@end

extern volatile Boolean	mboxPause;

void MusicBoxDialog (void);

#endif