/* -*-mode:c-*- */
/************************************************************************
*
*        CS348C   Radiosity
*
*	(Dirty) extension to YOSSI interface.
*
*
*       May 6, 1991
*                                      Tsai, Tso-Sheng
*                                      Totsuka, Takashi
*
*       Derived from xsupport.c by Yossi Friedman
*
*************************************************************************/

#include "glib.h"

/**************************************************
*
*    Globals
*
***************************************************/



/**************************************************
*
*    g_init()
*
***************************************************/

void g_init(int ac, char *av[])
{
}



/**************************************************
*
*    g_start()
*
***************************************************/

void g_start(void (*mouse_func)(), long n_sliders, slider *slider_def, long n_choices, choice *choice_def)
{
}


/**************************************************
*
*    g_color()
*
***************************************************/

void g_color(long color)
{
}

void g_rgb( color )

    Rgb color ;
{
}


/**************************************************
*
*    g_line()
*
***************************************************/

void g_line(Vertex *p1, Vertex *p2)
{
}


/**************************************************
*
*    g_polygon()
*
***************************************************/

void g_polygon(long n, Vertex *p_list)
{
}


/**************************************************
*
*    g_spolygon()
*
***************************************************/

void g_spolygon(long n, Vertex *p_list, Rgb *c_list)
{
}


/**************************************************
*
*    g_clear()
*
***************************************************/

void g_clear()
{
}



/**************************************************
*
*    g_setup_view()
*
***************************************************/

void g_setup_view(float rot_x, float rot_y, float dist, float zoom)
{
}



/**************************************************
*
*    g_get_screen_size()
*
***************************************************/

void g_get_screen_size(long *u, long *v)
{
}


/**************************************************
*
*    g_flush()
*
***************************************************/

void g_flush()
{
}

