summaryrefslogtreecommitdiffstats
path: root/progs/xdemos/overlay.c
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2010-05-21 09:32:38 -0700
committerEric Anholt <[email protected]>2010-05-21 12:20:39 -0700
commit68fc4b415e322f6744299e39864fbc377c6eff74 (patch)
tree4bafffd8b0105174f3c5c0ae327a005be9145990 /progs/xdemos/overlay.c
parente4f4489e3fc0b36d72821b55794fb843b2b7fa5f (diff)
Remove demos that have moved to git+ssh://git.freedesktop.org/git/mesa/demos.
The remaining programs are ones I've had difficulty finding a build environment for to make the build system or are unit tests that should probably live next to their code instead. Hopefully people can bring over the build for remaining pieces they care about.
Diffstat (limited to 'progs/xdemos/overlay.c')
-rw-r--r--progs/xdemos/overlay.c246
1 files changed, 0 insertions, 246 deletions
diff --git a/progs/xdemos/overlay.c b/progs/xdemos/overlay.c
deleted file mode 100644
index 758f85c4492..00000000000
--- a/progs/xdemos/overlay.c
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * GLX overlay test/demo.
- *
- * Brian Paul
- * 18 July 2005
- */
-
-#include <GL/gl.h>
-#include <GL/glx.h>
-#include <X11/keysym.h>
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-static int WinWidth = 300, WinHeight = 300;
-static Window NormalWindow = 0;
-static Window OverlayWindow = 0;
-static GLXContext NormalContext = 0;
-static GLXContext OverlayContext = 0;
-static GLboolean RGBOverlay = GL_FALSE;
-static GLfloat Angle = 0.0;
-
-
-static void
-RedrawNormal(Display *dpy)
-{
- glXMakeCurrent(dpy, NormalWindow, NormalContext);
- glViewport(0, 0, WinWidth, WinHeight);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
- glMatrixMode(GL_MODELVIEW);
- glClearColor(0.5, 0.5, 0.5, 1.0);
- glClear(GL_COLOR_BUFFER_BIT);
- glColor3f(1.0, 1.0, 0.0);
- glPushMatrix();
- glRotatef(Angle, 0, 0, 1);
- glRectf(-0.8, -0.8, 0.8, 0.8);
- glPopMatrix();
- glXSwapBuffers(dpy, NormalWindow);
-}
-
-
-static void
-RedrawOverlay(Display *dpy)
-{
- glXMakeCurrent(dpy, OverlayWindow, OverlayContext);
- glViewport(0, 0, WinWidth, WinHeight);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
- glMatrixMode(GL_MODELVIEW);
- glClear(GL_COLOR_BUFFER_BIT);
- if (RGBOverlay) {
- glColor3f(0.0, 1.0, 1.0);
- }
- else {
- glIndexi(2);
- }
- glBegin(GL_LINES);
- glVertex2f(-1, -1);
- glVertex2f(1, 1);
- glVertex2f(1, -1);
- glVertex2f(-1, 1);
- glEnd();
- glXSwapBuffers(dpy, OverlayWindow);
-}
-
-
-static Window
-MakeWindow(Display *dpy, XVisualInfo *visinfo, Window parent,
- unsigned int width, unsigned int height)
-{
- int scrnum;
- XSetWindowAttributes attr;
- unsigned long mask;
- Window root;
- Window win;
-
- scrnum = DefaultScreen(dpy);
- root = RootWindow(dpy, scrnum);
-
- /* window attributes */
- attr.background_pixel = 0;
- attr.border_pixel = 0;
- attr.colormap = XCreateColormap(dpy, root, visinfo->visual, AllocNone);
- attr.event_mask = StructureNotifyMask | ExposureMask | KeyPressMask;
- mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask;
-
- win = XCreateWindow(dpy, parent, 0, 0, width, height,
- 0, visinfo->depth, InputOutput,
- visinfo->visual, mask, &attr);
- return win;
-}
-
-
-static void
-MakeNormalWindow(Display *dpy)
-{
- int attrib[] = { GLX_RGBA,
- GLX_RED_SIZE, 1,
- GLX_GREEN_SIZE, 1,
- GLX_BLUE_SIZE, 1,
- GLX_DOUBLEBUFFER,
- None };
- int scrnum;
- Window root;
- XVisualInfo *visinfo;
-
- scrnum = DefaultScreen(dpy);
- root = RootWindow(dpy, scrnum);
-
- visinfo = glXChooseVisual(dpy, scrnum, attrib);
- if (!visinfo) {
- printf("Error: couldn't get an RGB, Double-buffered visual\n");
- exit(1);
- }
-
- NormalWindow = MakeWindow(dpy, visinfo, root, WinWidth, WinHeight);
- assert(NormalWindow);
-
- NormalContext = glXCreateContext(dpy, visinfo, NULL, True);
- assert(NormalContext);
-}
-
-
-static void
-MakeOverlayWindow(Display *dpy)
-{
- int rgbAttribs[] = {
- GLX_RGBA,
- GLX_RED_SIZE, 1,
- GLX_GREEN_SIZE, 1,
- GLX_BLUE_SIZE, 1,
- GLX_DOUBLEBUFFER,
- GLX_LEVEL, 1,
- None
- };
- int indexAttribs[] = {
- /*GLX_RGBA, leave this out */
- GLX_RED_SIZE, 1,
- GLX_GREEN_SIZE, 1,
- GLX_BLUE_SIZE, 1,
- GLX_DOUBLEBUFFER,
- GLX_LEVEL, 1,
- None
- };
- int scrnum;
- Window root;
- XVisualInfo *visinfo;
-
- scrnum = DefaultScreen(dpy);
- root = RootWindow(dpy, scrnum);
-
- visinfo = glXChooseVisual(dpy, scrnum, rgbAttribs);
- if (visinfo) {
- printf("Found RGB overlay visual 0x%x\n", (int) visinfo->visualid);
- RGBOverlay = GL_TRUE;
- }
- else {
- visinfo = glXChooseVisual(dpy, scrnum, indexAttribs);
- if (visinfo) {
- printf("Found Color Index overlay visual 0x%x\n",
- (int) visinfo->visualid);
- /* XXX setup the colormap entries! */
- }
- else {
- printf("Couldn't get an overlay visual.\n");
- printf("Your hardware probably doesn't support framebuffer overlay planes.\n");
- exit(1);
- }
- }
-
- OverlayWindow = MakeWindow(dpy, visinfo, NormalWindow, WinWidth, WinHeight);
- assert(OverlayWindow);
-
- OverlayContext = glXCreateContext(dpy, visinfo, NULL, True);
- assert(OverlayContext);
-}
-
-
-static void
-EventLoop(Display *dpy)
-{
- XEvent event;
-
- while (1) {
- XNextEvent(dpy, &event);
-
- switch (event.type) {
- case Expose:
- RedrawNormal(dpy);
- RedrawOverlay(dpy);
- break;
- case ConfigureNotify:
- WinWidth = event.xconfigure.width;
- WinHeight = event.xconfigure.height;
- if (event.xconfigure.window == NormalWindow)
- XResizeWindow(dpy, OverlayWindow, WinWidth, WinHeight);
- break;
- case KeyPress:
- {
- char buffer[10];
- int r, code;
- code = XLookupKeysym(&event.xkey, 0);
- r = XLookupString(&event.xkey, buffer, sizeof(buffer),
- NULL, NULL);
- if (buffer[0] == 27) {
- /* escape */
- return;
- }
- else if (buffer[0] == ' ') {
- Angle += 5.0;
- RedrawNormal(dpy);
- }
- }
- break;
- default:
- ; /* nothing */
- }
- }
-}
-
-
-int
-main(int argc, char *argv[])
-{
- Display *dpy = XOpenDisplay(NULL);
-
- assert(dpy);
-
- MakeNormalWindow(dpy);
- MakeOverlayWindow(dpy);
-
- XMapWindow(dpy, NormalWindow);
- XMapWindow(dpy, OverlayWindow);
-
- EventLoop(dpy);
-
- glXDestroyContext(dpy, OverlayContext);
- glXDestroyContext(dpy, NormalContext);
- XDestroyWindow(dpy, OverlayWindow);
- XDestroyWindow(dpy, NormalWindow);
-
- return 0;
-}