/* 
	This file was generated by BCC v2.0
	MUI mode
*/

/* .bcc_code for MUI mode */

/* Defines that help adjusting to any compiler */
#ifdef _DCC
#define REG(x) __ ## x
#define ASM
#define SAVEDS __geta4
#else
#define REG(x) register __ ## x
#ifdef _STORM
#define ASM
#define SAVEDS __saveds
#else
#if defined __MAXON__ || defined __GNUC__
#define ASM
#define SAVEDS
#else
#define ASM	__asm
#define SAVEDS __saveds
#endif
#endif
#endif

#ifndef PROTO_MUIMASTER_H
#include <proto/muimaster.h>
#endif

#ifndef PROTO_INTUITION_H
#include <proto/intuition.h>
#endif

#ifndef PROTO_UTILITY_H
#include <proto/utility.h>
#endif

#ifndef STRING_H
#include <string.h>
#endif

#ifndef LIBRARIES_BCC_H
#include <libraries/bcc.h>
#endif

#ifndef  CLIB_ALIB_PROTOS_H
#include <clib/alib_protos.h>
#endif

/* Only for custom methods */
#define CallSuper() DoSuperMethodA(cl, obj, msg)
#define GetData() INST_DATA(cl, obj)

#include <proto/graphics.h>

#include "EJG.h"

 static unsigned long mEJGOM_NEW( struct IClass *cl, Object *obj, struct opSet* msg )
{
 unsigned long _ret;
 EJGData *data, _tdata;
 data = &_tdata;
 memset( data, 0, sizeof( EJGData ) );
 obj = (Object*)BCC_DoSuperNew( cl, obj,

		MUIA_Background, MUII_BACKGROUND,
		MUIA_Frame, MUIV_Frame_ReadList
,
 TAG_MORE, (unsigned long)msg->ops_AttrList,
 TAG_DONE );
 _ret = (unsigned long)obj;
 if( !obj ) return 0;
 data = INST_DATA( cl, obj );
 memcpy( data, &_tdata, sizeof( EJGData ) );
{
 /* UC Beg */



}
 /* UC End */
OM_NEW_exit:
return _ret;
}

  static unsigned long mEJGMUIM_AskMinMax( struct IClass *cl, Object *obj, struct MUIP_AskMinMax* msg )
{
 unsigned long _ret = 1;
 _ret = DoSuperMethodA( cl, obj, (Msg)msg );
{
 /* UC Beg */

	msg->MinMaxInfo->MinWidth  += 50;
	msg->MinMaxInfo->DefWidth  += 120;
	msg->MinMaxInfo->MaxWidth  += MBQ_MUI_MAXMAX;

	msg->MinMaxInfo->MinHeight += 6;
	msg->MinMaxInfo->DefHeight += 6;
	msg->MinMaxInfo->MaxHeight += 6;


}
 /* UC End */
MUIM_AskMinMax_exit:
return _ret;
}

 static unsigned long mEJGMUIM_Draw( struct IClass *cl, Object *obj, struct MUIP_Draw* msg )
{
 unsigned long _ret = 1;
 EJGData *data = INST_DATA( cl, obj );
 _ret = DoSuperMethodA( cl, obj, (Msg)msg );
{
 /* UC Beg */


	if ( msg->flags & MADF_DRAWUPDATE ) {

		SetBPen( _rp( obj ), 0 );
		ScrollRaster( _rp( obj ), 1, 0, _mleft( obj )+1, _mtop( obj ), _mright( obj ), _mbottom( obj ) );
		if( data->hit ) {
			SetAPen( _rp( obj ), 2 );
			WritePixel( _rp( obj ), _mright( obj ), _mtop( obj ) + 1 );
		}
		else {
			SetAPen( _rp( obj ), 1 );
			WritePixel( _rp( obj ), _mright( obj ), _mtop( obj ) + 4 );
		}

		data->hit = 0;

	}
	

}
 /* UC End */
MUIM_Draw_exit:
return _ret;
}

 static unsigned long mEJGMUIM_Show( struct IClass *cl, Object *obj, Msg msg )
{
 unsigned long _ret = 1;
 EJGData *data = INST_DATA( cl, obj );
 _ret = DoSuperMethodA( cl, obj, (Msg)msg );
 if( !_ret ) return 0;
{
 /* UC Beg */

	data->render = 1;

}
 /* UC End */
MUIM_Show_exit:
return _ret;
}

 static unsigned long mEJGMUIM_Hide( struct IClass *cl, Object *obj, Msg msg )
{
 unsigned long _ret = 1;
 EJGData *data = INST_DATA( cl, obj );
{
 /* UC Beg */

	data->render = 0;

}
 /* UC End */
MUIM_Hide_exit:
 if( !_ret ) return 0;
 _ret = DoSuperMethodA( cl, obj, (Msg)msg );
return _ret;
}

static unsigned long mEJGAnim( struct IClass *cl, Object *obj,  struct { unsigned long MethodID; unsigned long sig ; } *msg )
{
 unsigned long _ret = 1;
 EJGData *data = INST_DATA( cl, obj );
{
 /* UC Beg */

	if( data->render ) {
		if( (msg->sig) ) data->hit = 1;
		MUI_Redraw( obj, MADF_DRAWUPDATE );
	}

}
 /* UC End */
Anim_exit:
return _ret;
}

/* MUI - EJG class dispatcher */


static unsigned long SAVEDS ASM EJG_Dispatcher( REG(a0) struct IClass *cl, REG(a2) Object *obj, REG(a1) Msg msg )
{
	switch( msg->MethodID ) {
		case MUIM_EJG_Anim: return mEJGAnim( cl, obj, (void*)msg );
		case OM_NEW: return mEJGOM_NEW( cl, obj, (struct opSet*)msg );
		case MUIM_AskMinMax: return mEJGMUIM_AskMinMax( cl, obj, (struct MUIP_AskMinMax*)msg );
		case MUIM_Draw: return mEJGMUIM_Draw( cl, obj, (struct MUIP_Draw*)msg );
		case MUIM_Show: return mEJGMUIM_Show( cl, obj, (Msg)msg );
		case MUIM_Hide: return mEJGMUIM_Hide( cl, obj, (Msg)msg );
	}
	return( DoSuperMethodA( cl, obj, msg ) );
}

struct MUI_CustomClass *EJG_Create( void )
{
	return MUI_CreateCustomClass( NULL, MUIC_Area, NULL, sizeof( EJGData ), EJG_Dispatcher );
}
