/*
 *  Source machine generated by GadToolsBox V2.0b
 *  which is (c) Copyright 1991-1993 Jaba Development
 *
 *  GUI Designed by : (ray-1 of A((eSS
 */

#include <exec/types.h>
#include <intuition/intuition.h>
#include <intuition/classes.h>
#include <intuition/classusr.h>
#include <intuition/imageclass.h>
#include <intuition/gadgetclass.h>
#include <libraries/gadtools.h>
#include <graphics/displayinfo.h>
#include <graphics/gfxbase.h>
#include <clib/exec_protos.h>
#include <clib/intuition_protos.h>
#include <clib/gadtools_protos.h>
#include <clib/graphics_protos.h>
#include <clib/utility_protos.h>
#include <string.h>

#include "Screen.h"

static struct Screen         *Scr = NULL;
static APTR                   VisualInfo = NULL;
static struct Window         *VectorWnd = NULL;
static struct Gadget         *VectorGList = NULL;
static struct Gadget         *VectorGadgets[10];
static UWORD                  VectorLeft = 0;
static UWORD                  VectorTop = 0;
static UWORD                  VectorWidth = 662;
static UWORD                  VectorHeight = 244;
static UBYTE                 *VectorWdt = NULL;

static struct TextAttr XHelvetica9 = {
	( STRPTR )"XHelvetica.font", 9, 0x00, 0x20 };

static UWORD VectorGTypes[] = {
	BUTTON_KIND,
	SLIDER_KIND,
	BUTTON_KIND,
	BUTTON_KIND,
	BUTTON_KIND,
	BUTTON_KIND,
	BUTTON_KIND,
	NUMBER_KIND,
	BUTTON_KIND,
	BUTTON_KIND
};

static struct NewGadget VectorNGad[] = {
	546, 229, 110, 15, (UBYTE *)"STOP", NULL, GD_STOP, PLACETEXT_IN, NULL, NULL,
	116, 214, 544, 14, NULL, NULL, GD_SLIDER, 0, NULL, NULL,
	426, 229, 110, 15, (UBYTE *)"Play Forever", NULL, GD_LOOP, PLACETEXT_IN, NULL, NULL,
	305, 229, 110, 15, (UBYTE *)"<<<<   DEBUG   >>>>", NULL, GD_DEBUG, PLACETEXT_IN, NULL, NULL,
	182, 229, 110, 15, (UBYTE *)"Ping-Pong", NULL, GD_PINGPONG, PLACETEXT_IN, NULL, NULL,
	65, 229, 110, 15, (UBYTE *)"Play", NULL, GD_PLAY, PLACETEXT_IN, NULL, NULL,
	2, 229, 56, 15, (UBYTE *)"QUIT", NULL, GD_QUIT, PLACETEXT_IN, NULL, NULL,
	82, 214, 30, 13, NULL, NULL, GD_FRAME, 0, NULL, NULL,
	6, 214, 34, 13, (UBYTE *)"<-", NULL, GD_BACK, PLACETEXT_IN, NULL, NULL,
	44, 214, 34, 13, (UBYTE *)"->", NULL, GD_FORWARD, PLACETEXT_IN, NULL, NULL
};

static ULONG VectorGTags[] = {
	(TAG_DONE),
	(GTSL_Max), 100, (PGA_Freedom), LORIENT_HORIZ, (GA_Immediate), TRUE, (GA_RelVerify), TRUE, (TAG_DONE),
	(TAG_DONE),
	(TAG_DONE),
	(TAG_DONE),
	(TAG_DONE),
	(TAG_DONE),
	(GTNM_Border), TRUE, (TAG_DONE),
	(TAG_DONE),
	(TAG_DONE)
};

static struct ColorSpec ScreenColors[] = {
	 0, 0x0A, 0x0A, 0x0A,
	 1, 0x00, 0x00, 0x00,
	 2, 0x0F, 0x0F, 0x0F,
	 3, 0x06, 0x08, 0x0B,
	 4, 0x09, 0x09, 0x09,
	 5, 0x0B, 0x0B, 0x0B,
	 6, 0x0B, 0x0A, 0x09,
	 7, 0x0F, 0x0B, 0x0A,
	-1, 0x00, 0x00, 0x00 };

static UWORD DriPens[] = {
	0,1,1,2,1,3,1,0,2,1,2,1,(signed short)-1 };

int SetupScreen( void )
{
	if ( ! ( Scr = OpenScreenTags( NULL, SA_Left,	0,
					SA_Top,		0,
					SA_Width,	662,
					SA_Height,	256,
					SA_Depth,	3,
					SA_Colors,	&ScreenColors[0],
					SA_Font,	&XHelvetica9,
					SA_Type,	CUSTOMSCREEN,
					SA_DisplayID,	PAL_MONITOR_ID|HIRES_KEY,
					SA_AutoScroll,	TRUE,
					SA_Overscan,	OSCAN_TEXT,
					SA_Pens,	&DriPens[0],
					SA_Title,	"Cray-1's_Custom_Screen",
					TAG_DONE )))
		return( 1L );

	if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
		return( 2L );

	return( 0L );
}

void CloseDownScreen( void )
{
	if ( VisualInfo ) {
		FreeVisualInfo( VisualInfo );
		VisualInfo = NULL;
	}

	if ( Scr        ) {
		CloseScreen( Scr );
		Scr = NULL;
	}
}

void VectorRender( void )
{
	UWORD		offx, offy;

	offx = 0;
	offy = Scr->WBorTop + Scr->Font->ta_YSize + 1;


	DrawBevelBox( VectorWnd->RPort, offx + 3, offy + 1, 657, 212, GT_VisualInfo, VisualInfo, TAG_DONE );
}

int OpenVectorWindow( void )
{
	struct NewGadget	ng;
	struct Gadget	*g;
	UWORD		lc, tc;
	UWORD		offx = 0, offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;

	if ( ! ( g = CreateContext( &VectorGList )))
		return( 1L );

	for( lc = 0, tc = 0; lc < Vector_CNT; lc++ ) {

		CopyMem((char * )&VectorNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));

		ng.ng_VisualInfo = VisualInfo;
		ng.ng_TextAttr   = &XHelvetica9;
		ng.ng_LeftEdge  += offx;
		ng.ng_TopEdge   += offy;

		VectorGadgets[ lc ] = g = CreateGadgetA((ULONG)VectorGTypes[ lc ], g, &ng, ( struct TagItem * )&VectorGTags[ tc ] );

		while( VectorGTags[ tc ] ) tc += 2;
		tc++;

		if ( NOT g )
			return( 2L );
	}

	if ( ! ( VectorWnd = OpenWindowTags( NULL,
				WA_Left,	VectorLeft,
				WA_Top,		VectorTop,
				WA_Width,	VectorWidth,
				WA_Height,	VectorHeight + offy,
				WA_IDCMP,	BUTTONIDCMP|SLIDERIDCMP|NUMBERIDCMP|IDCMP_MOUSEBUTTONS|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_RAWKEY|IDCMP_ACTIVEWINDOW|IDCMP_REFRESHWINDOW,
				WA_Flags,	WFLG_SMART_REFRESH|WFLG_BACKDROP|WFLG_REPORTMOUSE|WFLG_BORDERLESS|WFLG_ACTIVATE,
				WA_Gadgets,	VectorGList,
				WA_CustomScreen,	Scr,
				TAG_DONE )))
	return( 4L );

	GT_RefreshWindow( VectorWnd, NULL );

	VectorRender();

	return( 0L );
}

void CloseVectorWindow( void )
{
	if ( VectorWnd        ) {
		CloseWindow( VectorWnd );
		VectorWnd = NULL;
	}

	if ( VectorGList      ) {
		FreeGadgets( VectorGList );
		VectorGList = NULL;
	}
}

