Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 5097 → Rev 5098

/programs/develop/libraries/TinyGL/examples/nanox.c
0,0 → 1,113
/*
* Demonstration program for Nano-X graphics.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MWINCLUDECOLORS
#include <microwin/nano-X.h>
#include <GL/gl.h>
#include <GL/nglx.h>
#include "ui.h"
 
static GR_WINDOW_ID w1; /* id for large window */
static GR_GC_ID gc1; /* graphics context for text */
 
void errorcatcher(); /* routine to handle errors */
 
void tkSwapBuffers(void)
{
nglXSwapBuffers(w1);
}
 
int
ui_loop(int argc,char **argv, const char *name)
{
GR_EVENT event; /* current event */
GR_IMAGE_ID id = 0;
NGLXContext cx;
int width, height, k;
 
if (GrOpen() < 0) {
fprintf(stderr, "cannot open graphics\n");
exit(1);
}
width = 400;
height = 300;
 
GrSetErrorHandler(errorcatcher);
 
w1 = GrNewWindow(GR_ROOT_WINDOW_ID, 10, 10, width, height, 4, BLACK, WHITE);
 
GrSelectEvents(w1, GR_EVENT_MASK_CLOSE_REQ|GR_EVENT_MASK_EXPOSURE|GR_EVENT_MASK_KEY_DOWN);
 
GrMapWindow(w1);
 
gc1 = GrNewGC();
 
GrSetGCForeground(gc1, WHITE);
 
cx = nglXCreateContext(NULL, 0);
nglXMakeCurrent(w1, cx);
init();
reshape(width, height);
 
while (1) {
GrCheckNextEvent(&event);
switch(event.type) {
case GR_EVENT_TYPE_CLOSE_REQ:
GrFreeImage(id);
GrClose();
exit(0);
case GR_EVENT_TYPE_EXPOSURE:
break;
case GR_EVENT_TYPE_KEY_DOWN:
{
GR_EVENT_KEYSTROKE *kp = &event.keystroke;
/* XXX: nanoX special keys are totally bugged ! */
switch(kp->ch) {
case 81:
k = KEY_LEFT;
break;
case 83:
k = KEY_RIGHT;
break;
case 82:
k = KEY_UP;
break;
case 84:
k = KEY_DOWN;
break;
default:
k = kp->ch;
break;
}
key(k, 0);
}
break;
default:
idle();
break;
}
}
 
return 0;
}
 
 
/*
* Here on an unrecoverable error.
*/
void
errorcatcher(code, name, id)
GR_ERROR code; /* error code */
GR_FUNC_NAME name; /* function name which failed */
GR_ID id; /* resource id */
{
GrClose();
fprintf(stderr, "DEMO ERROR: code %d, function %s, resource id %d\n",
code, name, id);
exit(1);
}