/* EditImages.c */
/*****************************************************************************/
/*                                                                           */
/*    Out Of Phase:  Digital Music Synthesis on General Purpose Computers    */
/*    Copyright (C) 1994  Thomas R. Lawrence                                 */
/*                                                                           */
/*    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., 675 Mass Ave, Cambridge, MA 02139, USA.              */
/*                                                                           */
/*    Thomas R. Lawrence can be reached at tomlaw@world.std.com.             */
/*                                                                           */
/*****************************************************************************/

#include "MiscInfo.h"
#include "Audit.h"
#include "Debug.h"
#include "Definitions.h"

#define Compiling_EditImages
#include "EditImages.h"
#include "Screen.h"
#include "EventLoop.h"


EXECUTE(static MyBoolean		Initialized = False;)

Bitmap*											Bits8Unselected;
Bitmap*											Bits8Selected;
Bitmap*											Bits8MouseDown;
Bitmap*											Bits16Unselected;
Bitmap*											Bits16Selected;
Bitmap*											Bits16MouseDown;
Bitmap*											MonoUnselected;
Bitmap*											MonoSelected;
Bitmap*											MonoMouseDown;
Bitmap*											StereoUnselected;
Bitmap*											StereoSelected;
Bitmap*											StereoMouseDown;
Bitmap*											PlayMouseUp;
Bitmap*											PlayMouseDown;
Bitmap*											ZoomInMouseUp;
Bitmap*											ZoomInMouseDown;
Bitmap*											ZoomOutMouseUp;
Bitmap*											ZoomOutMouseDown;


static unsigned char				oBits8Unselected[] =
	{
		0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x01,0x80,0x07,0xE0,0x01,0x80,0x18,0x30,0x01,
		0x80,0x30,0x18,0x01,0x80,0x30,0x18,0x01,0x80,0x30,0x18,0x01,0x80,0x38,0x30,0x01,
		0x80,0x1F,0x60,0x01,0x80,0x07,0xE0,0x01,0x80,0x18,0xF8,0x01,0x80,0x30,0x3C,0x01,
		0x80,0x60,0x1C,0x01,0x80,0x60,0x0C,0x01,0x80,0x60,0x0C,0x01,0x80,0x30,0x18,0x01,
		0x80,0x18,0x30,0x01,0x80,0x0F,0xC0,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x40,0x01,
		0x83,0xF8,0x42,0x01,0x81,0x04,0x02,0x01,0x81,0x04,0xC7,0x81,0x81,0x04,0x42,0x01,
		0x81,0xF8,0x42,0x01,0x81,0x04,0x42,0x01,0x81,0x04,0x42,0x01,0x81,0x04,0x42,0x01,
		0x83,0xF8,0xE3,0x81,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF
	};

static unsigned char				oBits8Selected[] =
	{
		0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xE7,0xCF,0xFF,
		0xFF,0xCF,0xE7,0xFF,0xFF,0xCF,0xE7,0xFF,0xFF,0xCF,0xE7,0xFF,0xFF,0xC7,0xCF,0xFF,
		0xFF,0xE0,0x9F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xE7,0x07,0xFF,0xFF,0xCF,0xC3,0xFF,
		0xFF,0x9F,0xE3,0xFF,0xFF,0x9F,0xF3,0xFF,0xFF,0x9F,0xF3,0xFF,0xFF,0xCF,0xE7,0xFF,
		0xFF,0xE7,0xCF,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,
		0xFC,0x07,0xBD,0xFF,0xFE,0xFB,0xFD,0xFF,0xFE,0xFB,0x38,0x7F,0xFE,0xFB,0xBD,0xFF,
		0xFE,0x07,0xBD,0xFF,0xFE,0xFB,0xBD,0xFF,0xFE,0xFB,0xBD,0xFF,0xFE,0xFB,0xBD,0xFF,
		0xFC,0x07,0x1C,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
	};

static unsigned char				oBits8MouseDown[] =
	{
		0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x07,0xE0,0x03,0xC0,0x18,0x30,0x03,
		0xC0,0x30,0x18,0x03,0xC0,0x30,0x18,0x03,0xC0,0x30,0x18,0x03,0xC0,0x38,0x30,0x03,
		0xC0,0x1F,0x60,0x03,0xC0,0x07,0xE0,0x03,0xC0,0x18,0xF8,0x03,0xC0,0x30,0x3C,0x03,
		0xC0,0x60,0x1C,0x03,0xC0,0x60,0x0C,0x03,0xC0,0x60,0x0C,0x03,0xC0,0x30,0x18,0x03,
		0xC0,0x18,0x30,0x03,0xC0,0x0F,0xC0,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x40,0x03,
		0xC3,0xF8,0x42,0x03,0xC1,0x04,0x02,0x03,0xC1,0x04,0xC7,0x83,0xC1,0x04,0x42,0x03,
		0xC1,0xF8,0x42,0x03,0xC1,0x04,0x42,0x03,0xC1,0x04,0x42,0x03,0xC1,0x04,0x42,0x03,
		0xC3,0xF8,0xE3,0x83,0xC0,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
	};

static unsigned char				oBits16Unselected[] =
	{
		0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x01,0x81,0x80,0x0F,0x81,0x8F,0x80,0x10,0x61,
		0x81,0x80,0x20,0x61,0x81,0x80,0x60,0x01,0x81,0x80,0x40,0x01,0x81,0x80,0xCF,0x81,
		0x81,0x80,0xF0,0xC1,0x81,0x80,0xE0,0x61,0x81,0x80,0xC0,0x31,0x81,0x80,0xC0,0x31,
		0x81,0x80,0xC0,0x31,0x81,0x80,0xC0,0x31,0x81,0x80,0x40,0x31,0x81,0x80,0x60,0x61,
		0x83,0xC0,0x30,0xC1,0x8F,0xF0,0x0F,0x81,0x80,0x00,0x00,0x01,0x80,0x00,0x20,0x01,
		0x81,0xFC,0x21,0x01,0x80,0x82,0x01,0x01,0x80,0x82,0x63,0xC1,0x80,0x82,0x21,0x01,
		0x80,0xFC,0x21,0x01,0x80,0x82,0x21,0x01,0x80,0x82,0x21,0x01,0x80,0x82,0x21,0x01,
		0x81,0xFC,0x71,0xC1,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF
	};

static unsigned char				oBits16Selected[] =
	{
		0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7F,0xF0,0x7F,0xF0,0x7F,0xEF,0x9F,
		0xFE,0x7F,0xDF,0x9F,0xFE,0x7F,0x9F,0xFF,0xFE,0x7F,0xBF,0xFF,0xFE,0x7F,0x30,0x7F,
		0xFE,0x7F,0x0F,0x3F,0xFE,0x7F,0x1F,0x9F,0xFE,0x7F,0x3F,0xCF,0xFE,0x7F,0x3F,0xCF,
		0xFE,0x7F,0x3F,0xCF,0xFE,0x7F,0x3F,0xCF,0xFE,0x7F,0xBF,0xCF,0xFE,0x7F,0x9F,0x9F,
		0xFC,0x3F,0xCF,0x3F,0xF0,0x0F,0xF0,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,
		0xFE,0x03,0xDE,0xFF,0xFF,0x7D,0xFE,0xFF,0xFF,0x7D,0x9C,0x3F,0xFF,0x7D,0xDE,0xFF,
		0xFF,0x03,0xDE,0xFF,0xFF,0x7D,0xDE,0xFF,0xFF,0x7D,0xDE,0xFF,0xFF,0x7D,0xDE,0xFF,
		0xFE,0x03,0x8E,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
	};

static unsigned char				oBits16MouseDown[] =
	{
		0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC1,0x80,0x0F,0x83,0xCF,0x80,0x10,0x63,
		0xC1,0x80,0x20,0x63,0xC1,0x80,0x60,0x03,0xC1,0x80,0x40,0x03,0xC1,0x80,0xCF,0x83,
		0xC1,0x80,0xF0,0xC3,0xC1,0x80,0xE0,0x63,0xC1,0x80,0xC0,0x33,0xC1,0x80,0xC0,0x33,
		0xC1,0x80,0xC0,0x33,0xC1,0x80,0xC0,0x33,0xC1,0x80,0x40,0x33,0xC1,0x80,0x60,0x63,
		0xC3,0xC0,0x30,0xC3,0xCF,0xF0,0x0F,0x83,0xC0,0x00,0x00,0x03,0xC0,0x00,0x20,0x03,
		0xC1,0xFC,0x21,0x03,0xC0,0x82,0x01,0x03,0xC0,0x82,0x63,0xC3,0xC0,0x82,0x21,0x03,
		0xC0,0xFC,0x21,0x03,0xC0,0x82,0x21,0x03,0xC0,0x82,0x21,0x03,0xC0,0x82,0x21,0x03,
		0xC1,0xFC,0x71,0xC3,0xC0,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
	};

static unsigned char				oMonoUnselected[] =
	{
		0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,
		0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,
		0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x80,0x00,0x01,0x81,0x90,0x00,0x01,
		0x83,0x88,0x00,0x01,0x87,0xA4,0x00,0x01,0xBF,0x94,0x00,0x01,0xBF,0x94,0x00,0x01,
		0xBF,0x94,0x00,0x01,0xBF,0x94,0x00,0x01,0x87,0xA4,0x00,0x01,0x83,0x88,0x00,0x01,
		0x81,0x90,0x00,0x01,0x80,0x80,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,
		0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,
		0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF
	};

static unsigned char				oMonoSelected[] =
	{
		0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
		0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
		0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFE,0x6F,0xFF,0xFF,
		0xFC,0x77,0xFF,0xFF,0xF8,0x5B,0xFF,0xFF,0xC0,0x6B,0xFF,0xFF,0xC0,0x6B,0xFF,0xFF,
		0xC0,0x6B,0xFF,0xFF,0xC0,0x6B,0xFF,0xFF,0xF8,0x5B,0xFF,0xFF,0xFC,0x77,0xFF,0xFF,
		0xFE,0x6F,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
		0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
		0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
	};

static unsigned char				oMonoMouseDown[] =
	{
		0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,
		0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,
		0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x80,0x00,0x03,0xC1,0x90,0x00,0x03,
		0xC3,0x88,0x00,0x03,0xC7,0xA4,0x00,0x03,0xFF,0x94,0x00,0x03,0xFF,0x94,0x00,0x03,
		0xFF,0x94,0x00,0x03,0xFF,0x94,0x00,0x03,0xC7,0xA4,0x00,0x03,0xC3,0x88,0x00,0x03,
		0xC1,0x90,0x00,0x03,0xC0,0x80,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,
		0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,
		0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
	};

static unsigned char				oStereoUnselected[] =
	{
		0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,
		0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,
		0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x80,0x01,0x01,0x81,0x90,0x09,0x81,
		0x83,0x88,0x11,0xC1,0x87,0xA4,0x25,0xE1,0xBF,0x94,0x29,0xFD,0xBF,0x94,0x29,0xFD,
		0xBF,0x94,0x29,0xFD,0xBF,0x94,0x29,0xFD,0x87,0xA4,0x25,0xE1,0x83,0x88,0x11,0xC1,
		0x81,0x90,0x09,0x81,0x80,0x80,0x01,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,
		0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,
		0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF
	};

static unsigned char				oStereoSelected[] =
	{
		0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
		0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
		0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFE,0xFF,0xFE,0x6F,0xF6,0x7F,
		0xFC,0x77,0xEE,0x3F,0xF8,0x5B,0xDA,0x1F,0xC0,0x6B,0xD6,0x03,0xC0,0x6B,0xD6,0x03,
		0xC0,0x6B,0xD6,0x03,0xC0,0x6B,0xD6,0x03,0xF8,0x5B,0xDA,0x1F,0xFC,0x77,0xEE,0x3F,
		0xFE,0x6F,0xF6,0x7F,0xFF,0x7F,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
		0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
		0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
	};

static unsigned char				oStereoMouseDown[] =
	{
		0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,
		0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,
		0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x80,0x01,0x03,0xC1,0x90,0x09,0x83,
		0xC3,0x88,0x11,0xC3,0xC7,0xA4,0x25,0xE3,0xFF,0x94,0x29,0xFF,0xFF,0x94,0x29,0xFF,
		0xFF,0x94,0x29,0xFF,0xFF,0x94,0x29,0xFF,0xC7,0xA4,0x25,0xE3,0xC3,0x88,0x11,0xC3,
		0xC1,0x90,0x09,0x83,0xC0,0x80,0x01,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,
		0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,
		0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
	};

static unsigned char				oPlayMouseUp[] =
	{
		0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,
		0x80,0x18,0x00,0x01,0x80,0x1C,0x00,0x01,0x80,0x1E,0x00,0x01,0x80,0x1F,0x00,0x01,
		0x80,0x1F,0x80,0x01,0x80,0x1F,0xC0,0x01,0x80,0x1F,0xE0,0x01,0x80,0x1F,0xF0,0x01,
		0x80,0x1F,0xF8,0x01,0x80,0x1F,0xFC,0x01,0x80,0x1F,0xFE,0x01,0x80,0x1F,0xFF,0x01,
		0x80,0x1F,0xFE,0x01,0x80,0x1F,0xFC,0x01,0x80,0x1F,0xF8,0x01,0x80,0x1F,0xF0,0x01,
		0x80,0x1F,0xE0,0x01,0x80,0x1F,0xC0,0x01,0x80,0x1F,0x80,0x01,0x80,0x1F,0x00,0x01,
		0x80,0x1E,0x00,0x01,0x80,0x1C,0x00,0x01,0x80,0x18,0x00,0x01,0x80,0x00,0x00,0x01,
		0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF
	};

static unsigned char				oPlayMouseDown[] =
	{
		0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,
		0xC0,0x18,0x00,0x03,0xC0,0x1C,0x00,0x03,0xC0,0x1E,0x00,0x03,0xC0,0x1F,0x00,0x03,
		0xC0,0x1F,0x80,0x03,0xC0,0x1F,0xC0,0x03,0xC0,0x1F,0xE0,0x03,0xC0,0x1F,0xF0,0x03,
		0xC0,0x1F,0xF8,0x03,0xC0,0x1F,0xFC,0x03,0xC0,0x1F,0xFE,0x03,0xC0,0x1F,0xFF,0x03,
		0xC0,0x1F,0xFE,0x03,0xC0,0x1F,0xFC,0x03,0xC0,0x1F,0xF8,0x03,0xC0,0x1F,0xF0,0x03,
		0xC0,0x1F,0xE0,0x03,0xC0,0x1F,0xC0,0x03,0xC0,0x1F,0x80,0x03,0xC0,0x1F,0x00,0x03,
		0xC0,0x1E,0x00,0x03,0xC0,0x1C,0x00,0x03,0xC0,0x18,0x00,0x03,0xC0,0x00,0x00,0x03,
		0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
	};

static unsigned char				oZoomInMouseUp[] =
	{
		0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,
		0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x87,0x80,0x00,0x01,
		0x80,0x80,0x00,0x01,0x81,0x18,0xCE,0xC1,0x82,0x25,0x29,0x21,0x84,0x25,0x29,0x21,
		0x84,0x25,0x29,0x21,0x87,0x98,0xC9,0x21,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,
		0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x02,0x00,0x01,0x80,0x02,0x00,0x01,
		0x80,0x02,0xE0,0x01,0x80,0x02,0x90,0x01,0x80,0x02,0x90,0x01,0x80,0x02,0x90,0x01,
		0x80,0x02,0x90,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,
		0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF
	};

static unsigned char				oZoomInMouseDown[] =
	{
		0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,
		0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC7,0x80,0x00,0x03,
		0xC0,0x80,0x00,0x03,0xC1,0x18,0xCE,0xC3,0xC2,0x25,0x29,0x23,0xC4,0x25,0x29,0x23,
		0xC4,0x25,0x29,0x23,0xC7,0x98,0xC9,0x23,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,
		0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x02,0x00,0x03,0xC0,0x02,0x00,0x03,
		0xC0,0x02,0xE0,0x03,0xC0,0x02,0x90,0x03,0xC0,0x02,0x90,0x03,0xC0,0x02,0x90,0x03,
		0xC0,0x02,0x90,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,
		0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
	};

static unsigned char				oZoomOutMouseUp[] =
	{
		0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,
		0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x87,0x80,0x00,0x01,
		0x80,0x80,0x00,0x01,0x81,0x18,0xCE,0xC1,0x82,0x25,0x29,0x21,0x84,0x25,0x29,0x21,
		0x84,0x25,0x29,0x21,0x87,0x98,0xC9,0x21,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,
		0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x38,0x04,0x01,0x80,0x44,0x04,0x01,
		0x80,0x45,0x2E,0x01,0x80,0x45,0x24,0x01,0x80,0x45,0x24,0x01,0x80,0x45,0x24,0x01,
		0x80,0x38,0xE2,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,
		0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF
	};

static unsigned char				oZoomOutMouseDown[] =
	{
		0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,
		0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC7,0x80,0x00,0x03,
		0xC0,0x80,0x00,0x03,0xC1,0x18,0xCE,0xC3,0xC2,0x25,0x29,0x23,0xC4,0x25,0x29,0x23,
		0xC4,0x25,0x29,0x23,0xC7,0x98,0xC9,0x23,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,
		0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x38,0x04,0x03,0xC0,0x44,0x04,0x03,
		0xC0,0x45,0x2E,0x03,0xC0,0x45,0x24,0x03,0xC0,0x45,0x24,0x03,0xC0,0x45,0x24,0x03,
		0xC0,0x38,0xE2,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,
		0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
	};


MyBoolean						InitializeEditImages(void)
	{
		ERROR(Initialized,PRERR(ForceAbort,"InitializeEditImages:  already initialized"));
		EXECUTE(Initialized = True;)
		/* we do not watch for out of memory conditions because this should be */
		/* called early when there is plenty of memory available */
		Bits8Unselected = MakeBitmap(oBits8Unselected,32,32,4);
		if (Bits8Unselected == NIL)
			{
			 FailurePoint1:
				return False;
			}
		Bits8Selected = MakeBitmap(oBits8Selected,32,32,4);
		if (Bits8Selected == NIL)
			{
			 FailurePoint2:
				DisposeBitmap(Bits8Unselected);
				goto FailurePoint1;
			}
		Bits8MouseDown = MakeBitmap(oBits8MouseDown,32,32,4);
		if (Bits8MouseDown == NIL)
			{
			 FailurePoint3:
				DisposeBitmap(Bits8Selected);
				goto FailurePoint2;
			}
		Bits16Unselected = MakeBitmap(oBits16Unselected,32,32,4);
		if (Bits16Unselected == NIL)
			{
			 FailurePoint4:
				DisposeBitmap(Bits8MouseDown);
				goto FailurePoint3;
			}
		Bits16Selected = MakeBitmap(oBits16Selected,32,32,4);
		if (Bits16Selected == NIL)
			{
			 FailurePoint5:
				DisposeBitmap(Bits16Unselected);
				goto FailurePoint4;
			}
		Bits16MouseDown = MakeBitmap(oBits16MouseDown,32,32,4);
		if (Bits16MouseDown == NIL)
			{
			 FailurePoint6:
				DisposeBitmap(Bits16Selected);
				goto FailurePoint5;
			}
		MonoUnselected = MakeBitmap(oMonoUnselected,32,32,4);
		if (MonoUnselected == NIL)
			{
			 FailurePoint7:
				DisposeBitmap(Bits16MouseDown);
				goto FailurePoint6;
			}
		MonoSelected = MakeBitmap(oMonoSelected,32,32,4);
		if (MonoSelected == NIL)
			{
			 FailurePoint8:
				DisposeBitmap(MonoUnselected);
				goto FailurePoint7;
			}
		MonoMouseDown = MakeBitmap(oMonoMouseDown,32,32,4);
		if (MonoMouseDown == NIL)
			{
			 FailurePoint9:
				DisposeBitmap(MonoSelected);
				goto FailurePoint8;
			}
		StereoUnselected = MakeBitmap(oStereoUnselected,32,32,4);
		if (StereoUnselected == NIL)
			{
			 FailurePoint10:
				DisposeBitmap(MonoMouseDown);
				goto FailurePoint9;
			}
		StereoSelected = MakeBitmap(oStereoSelected,32,32,4);
		if (StereoSelected == NIL)
			{
			 FailurePoint11:
				DisposeBitmap(StereoUnselected);
				goto FailurePoint10;
			}
		StereoMouseDown = MakeBitmap(oStereoMouseDown,32,32,4);
		if (StereoMouseDown == NIL)
			{
			 FailurePoint12:
				DisposeBitmap(StereoSelected);
				goto FailurePoint11;
			}
		PlayMouseUp = MakeBitmap(oPlayMouseUp,32,32,4);
		if (PlayMouseUp == NIL)
			{
			 FailurePoint13:
				DisposeBitmap(StereoMouseDown);
				goto FailurePoint12;
			}
		PlayMouseDown = MakeBitmap(oPlayMouseDown,32,32,4);
		if (PlayMouseDown == NIL)
			{
			 FailurePoint14:
				DisposeBitmap(PlayMouseUp);
				goto FailurePoint13;
			}
		ZoomInMouseUp = MakeBitmap(oZoomInMouseUp,32,32,4);
		if (ZoomInMouseUp == NIL)
			{
			 FailurePoint15:
				DisposeBitmap(PlayMouseDown);
				goto FailurePoint14;
			}
		ZoomInMouseDown = MakeBitmap(oZoomInMouseDown,32,32,4);
		if (ZoomInMouseDown == NIL)
			{
			 FailurePoint16:
				DisposeBitmap(ZoomInMouseUp);
				goto FailurePoint15;
			}
		ZoomOutMouseUp = MakeBitmap(oZoomOutMouseUp,32,32,4);
		if (ZoomOutMouseUp == NIL)
			{
			 FailurePoint17:
				DisposeBitmap(ZoomInMouseDown);
				goto FailurePoint16;
			}
		ZoomOutMouseDown = MakeBitmap(oZoomOutMouseDown,32,32,4);
		if (ZoomOutMouseDown == NIL)
			{
			 FailurePoint18:
				DisposeBitmap(ZoomOutMouseUp);
				goto FailurePoint17;
			}
		return True;
	}


void								CleanupEditImages(void)
	{
		ERROR(!Initialized,PRERR(ForceAbort,"CleanupEditImages:  not initialized"));
		EXECUTE(Initialized = False;)
		/* nobody wants the bitmaps anymore... <sniff> */
		DisposeBitmap(Bits8Unselected);
		DisposeBitmap(Bits8Selected);
		DisposeBitmap(Bits8MouseDown);
		DisposeBitmap(Bits16Unselected);
		DisposeBitmap(Bits16Selected);
		DisposeBitmap(Bits16MouseDown);
		DisposeBitmap(MonoUnselected);
		DisposeBitmap(MonoSelected);
		DisposeBitmap(MonoMouseDown);
		DisposeBitmap(StereoUnselected);
		DisposeBitmap(StereoSelected);
		DisposeBitmap(StereoMouseDown);
		DisposeBitmap(PlayMouseUp);
		DisposeBitmap(PlayMouseDown);
		DisposeBitmap(ZoomInMouseUp);
		DisposeBitmap(ZoomInMouseDown);
		DisposeBitmap(ZoomOutMouseUp);
		DisposeBitmap(ZoomOutMouseDown);
	}


static unsigned short				BarCursorImage[] =
	{
		0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0xF800,
		0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x0000
	};

static unsigned short				BarCursorMask[] =
	{
		0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
		0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
	};

void								SetSampleInsertionCursor(void)
	{
		SetTheCursor(2,7,BarCursorImage,BarCursorMask);
	}


static unsigned short				ScoreIntersticeCursorImage[] =
	{
		0x0000,0x0100,0x0100,0x0100,0x0100,0x1110,0x3118,0x7FFC,
		0x3118,0x1110,0x0100,0x0100,0x0100,0x0100,0x0000,0x0000
	};

static unsigned short				ScoreIntersticeCursorMask[] =
	{
		0x0380,0x0380,0x0380,0x0380,0x1BB0,0x3BB8,0x7FFC,0xFFFE,
		0x7FFC,0x3BB8,0x1BB0,0x0380,0x0380,0x0380,0x0380,0x0000
	};

void								SetScoreIntersticeCursor(void)
	{
		SetTheCursor(7,7,ScoreIntersticeCursorImage,ScoreIntersticeCursorMask);
	}


static unsigned short				ScoreOverlayCursorImage[] =
	{
		0x0000,0x0100,0x0100,0x0100,0x0100,0x0100,0x0100,0x7FFC,
		0x0100,0x0100,0x0100,0x0100,0x0100,0x0100,0x0000,0x0000
	};

static unsigned short				ScoreOverlayCursorMask[] =
	{
		0x0000,0x0100,0x0100,0x0100,0x0100,0x0100,0x0100,0x7FFC,
		0x0100,0x0100,0x0100,0x0100,0x0100,0x0100,0x0000,0x0000
	};

void								SetScoreOverlayCursor(void)
	{
		SetTheCursor(7,7,ScoreOverlayCursorImage,ScoreOverlayCursorMask);
	}
