View, CA 94039-7311.
 *
 * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
 */
/*  checker.c
 *  This program texture maps a checkerboard image onto
 *  two rectangles.  This program clamps the texture, if
 *  the texture coordinates fall outside 0.0 and 1.0.
 */
#include <GL/gl.h>
#include <GL/glu.h>
#include <stdlib.h>

/*	Create checkerboard texture	*/
#define	checkImageWidth 64
#define	checkImageHeight 64
GLubyte checkImage[checkImageWidth][checkImageHeight][3];

void makeCheckImage(void)
{
    int i, j, r, c;
    
    for (i = 0; i < checkImageWidth; i++) {
	for (j = 0; j < checkImageHeight; j++) {
	    c = ((((i&0x8)==0)^((j&0x8))==0))*255;
	    checkImage[i][j][0] = (GLubyte) c;
	    checkImage[i][j][1] = (GLubyte) c;
	    checkImage[i][j][2] = (GLubyte) c;
	}
    }
}

void myinit(void)
{    
    glClearColor (0.0, 0.0, 0.0, 0.0);
    glEnable(GL_DEPTH_TEST);
    glDepthFunc(GL_LESS);

    makeCheckImage();
    glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
    glTexImage2D(GL_TEXTURE_2D, 0, 3, checkImageWidth, 
	checkImageHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, 
	&checkImage[0][0][0]);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
    glEnable(GL_TEXTURE_2D);
    glShadeModel(GL_FLAT);
}

void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glBegin(GL_QUADS);
    glTexCoord2f(0.0, 0.0); glVertex3f(-2.0, -1.0, 0.0);
    glTexCoord2f(0.0, 1.0); glVertex3f(-2.0, 1.0, 0.0);
    glTexCoord2f(1.0, 1.0); glVertex3f(0.0, 1.0, 0.0);
    glTexCoord2f(1.0, 0.0); glVertex3f(0.0, -1.0, 0.0);

    glTexCoord2f(0.0, 0.0); glVertex3f(1.0, -1.0, 0.0);
    glTexCoord2f(0.0, 1.0); glVertex3f(1.0, 1.0, 0.0);
    glTexCoord2f(1.0, 1.0); glVertex3f(2.41421, 1.0, -1.41421);
    glTexCoord2f(1.0, 0.0); glVertex3f(2.41421, -1.0, -1.41421);
    glEnd();
    glFlush();
}

void myReshape(int w, int h)
{
    glViewport(0, 0, w, h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(60.0, 1.0*(GLfloat)w/(GLfloat)h, 1.0, 30.0);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glTranslatef(0.0, 0.0, -3.6);
}

int gl_width=500;
int gl_height=500;

void render_image(void)
{
    myinit();
    myReshape(gl_width,gl_height);
    display();
}
@
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  head	1.2;
access;
symbols;
locks; strict;
comment	@# @;


1.2
date	99.06.08.00.48.22;	author brianp;	state Exp;
branches;
next	1.1;

1.1
date	99.06.08.00.23.27;	author brianp;	state Exp;
branches;
next	;


desc
@@


1.2
log
@update from pete@@ohm.york.ac.uk
@
text
@INCDIR = ../../include
GL_LIBS = generic.o -L../../lib -lMesaGLU -lMesaGL
FRAMEWORKS=-framework AppKit -framework Foundation
PROGS = chess nurbs surface\
	checker checker2 texturesurf font model disk

all: generic.o $(PROGS)

generic.o:
	$(CC) -c -I$(INCDIR) $(CFLAGS) $*.m -o $@@

.c: $(LIB_DEP) generic.o
	$(CC) -I$(INCDIR) $(CFLAGS) $*.c $(GL_LIBS) $(FRAMEWORKS) -o $@@

clean:
	rm -f $(PROGS) *.o *.exe
@


1.1
log
@initial check-in
@
text
@d3 1
d13 1
a13 1
	$(CC) -I$(INCDIR) $(CFLAGS) $*.c $(GL_LIBS) -framework AppKit -o $@@
d16 1
a16 1
	rm -f $(PROGS) *.o
@

                                                                                                                                                                                               head	1.2;
access;
symbols;
locks; strict;
comment	@# @;


1.2
date	99.06.08.00.48.22;	author brianp;	state Exp;
branches;
next	1.1;

1.1
date	99.06.08.00.23.27;	author brianp;	state Exp;
branches;
next	;


desc
@@


1.2
log
@update from pete@@ohm.york.ac.uk
@
text
@INCDIR = ../../include
GL_LIBS = generic_next.o -L../../lib -lMesaGLU -lMesaGL
PROGS = chess nurbs surface\
	checker checker2 texturesurf font model disk

all:
	ranlib ../../lib/*.a
	make -f Makefile.NeXT CC="$(CC)" progs

progs: generic_next.o $(PROGS)

generic_next.o:
	$(CC) -c -I$(INCDIR) $(CFLAGS) ../Old_NeXT/generic.m -o $@@

.c: $(LIB_DEP) generic_next.o
	$(CC) -I$(INCDIR) $(CFLAGS) $*.c $(GL_LIBS) -lNeXT_s -o $@@

clean:
	rm -f $(PROGS) *.o *.exe
@


1.1
log
@initial check-in
@
text
@d19 1
a19 1
	rm -f $(PROGS) *.o
@

                                                                                                                                                                                                                                   t,FALSE,FALSE,FALSE,8,0,0);

  /* Work area manager widget */
  /* ======================== */

  main_workbox=gck_hbox_new(main_vbox,FALSE,FALSE,FALSE,5,0,5);

  /* Action area manager widget */
  /* ========================== */  

  gck_hseparator_new(main_vbox);
  actionbox=gck_hbox_new(main_vbox,TRUE,TRUE,TRUE,5,0,5); 

  /* Add Ok, Cancel and Help buttons to the action area */
  /* ================================================== */

  applybutton=gck_pushbutton_new("Apply",actionbox,FALSE,TRUE,5,(GtkSignalFunc)apply_callback);
  cancelbutton=gck_pushbutton_new("Cancel",actionbox,FALSE,TRUE,5,(GtkSignalFunc)exit_callback);
  helpbutton=gck_pushbutton_new("Help",actionbox,FALSE,TRUE,5,NULL);

  GTK_WIDGET_SET_FLAGS (applybutton, GTK_CAN_DEFAULT);
  GTK_WIDGET_SET_FLAGS (cancelbutton, GTK_CAN_DEFAULT);
  GTK_WIDGET_SET_FLAGS (helpbutton, GTK_CAN_DEFAULT);

  gtk_widget_grab_default (applybutton);
  gtk_widget_set_sensitive(helpbutton,FALSE);
  
  gtk_tooltips_set_tip(tooltips,applybutton,"Apply filter with current settings",NULL);
  gtk_tooltips_set_tip(tooltips,cancelbutton,"Close filter without doing anything",NULL);

  /* Split the workarea in two */
  /* ========================= */

  frame=gck_frame_new(NULL,main_workbox,GTK_SHADOW_ETCHED_IN,TRUE,TRUE,0,0);
  workbox1=gck_vbox_new(frame,FALSE,TRUE,TRUE,5,0,5);
  workbox2=gck_vbox_new(main_workbox,FALSE,FALSE,FALSE,0,0,0);

  /* Add preview widget and various buttons to the first part */
  /* ======================================================== */

  frame=gck_frame_new(NULL,workbox1,GTK_SHADOW_IN,FALSE,FALSE,0,0);
  previewarea = gck_drawing_area_new(frame, PREVIEW_WIDTH, PREVIEW_HEIGHT,
    GDK_EXPOSURE_MASK | GDK_BUTTON1_MOTION_MASK | GDK_BUTTON_PRESS_MASK | 
    GDK_BUTTON_RELEASE_MASK, (GtkSignalFunc)preview_events);

  workbox1b=gck_vbox_new(