GLw demo doesn't belong here
authorBrian Paul <brian.paul@tungstengraphics.com>
Tue, 23 Aug 2005 14:50:02 +0000 (14:50 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Tue, 23 Aug 2005 14:50:02 +0000 (14:50 +0000)
src/glw/boilerplate.c [deleted file]

diff --git a/src/glw/boilerplate.c b/src/glw/boilerplate.c
deleted file mode 100644 (file)
index c53a3fa..0000000
+++ /dev/null
@@ -1,451 +0,0 @@
-/*
-
-                                BOILERPLATE
-
-   To get started with mixed model programming with Motif and OpenGL, this
-   boilerplate `application' might help get you started.
-
-   This program honors two environment variables:
-
-      SETVISUAL <id>    Makes the application use the indicated visual,
-                        instead of the one chosen by glxChooseVisual.
-
-      SAMEVISUAL        Make the application use the same visual for the
-                        GUI as for the 3D GL Widget.
-
-   The basic idea is to minimize colormap `flash' on systems with only one
-   hardware colormap, especially when focus shifts between several
-   of the application's windows, e.g. the about box.
-
-   If you have suggestions for improvements, please mail to:
-
-
-      Jeroen van der Zijp  <jvz@cyberia.cfdrc.com>
-
-
-   Feel free to turn this into a useful program!!
-
-*/
-
-
-/*
-
-    This code is hereby placed under GNU GENERAL PUBLIC LICENSE.
-    Copyright (C) 1996 Jeroen van der Zijp <jvz@cyberia.cfdrc.com>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-
-/* Include the kitchen sink */
-#include <stdio.h>
-#include <stdlib.h>
-#include <X11/Intrinsic.h>
-#include <X11/StringDefs.h>
-#include <X11/cursorfont.h>
-#include <X11/keysym.h>
-#include <Xm/Xm.h>
-#include <Xm/MainW.h>
-#include <Xm/RowColumn.h>
-#include <Xm/PushB.h>
-#include <Xm/CascadeB.h>
-#include <Xm/BulletinB.h>
-#include <Xm/DialogS.h>
-#include <Xm/Frame.h>
-#include <Xm/MessageB.h>
-#include <Xm/Form.h>
-#include <Xm/Separator.h>
-#include <Xm/MwmUtil.h>
-
-/* Now some good stuff */
-#include <GLwMDrawA.h>
-#include <GL/gl.h>
-#include <GL/glu.h>
-#include <GL/glx.h>
-
-
-/* Stuff */
-Display      *display;
-Visual       *gui_visual;
-Colormap      gui_colormap;
-Colormap      gl_colormap;
-XVisualInfo  *gl_visualinfo;
-XtAppContext  app_context;
-Widget        toplevel;
-Widget        mainwindow;
-Widget        menubar;
-Widget        mainform;
-Widget        mainframe;
-Widget        glwidget;
-Widget        button;
-Widget        separator;
-GLXContext    glx_context;
-
-#ifndef __cplusplus
-#define c_class class
-#endif
-
-/* Requested attributes; fix as you see fit */
-static int glxConfig[]={
-  GLX_RGBA,
-  GLX_DOUBLEBUFFER,
-  GLX_DEPTH_SIZE,   16,
-  GLX_RED_SIZE,     1,
-  GLX_GREEN_SIZE,   1,
-  GLX_BLUE_SIZE,    1,
-  None
-  };
-
-
-/* Forwards */
-static void exposeCB(Widget w,XtPointer client_data,GLwDrawingAreaCallbackStruct *cbs);
-static void initCB(Widget w,XtPointer client_data,GLwDrawingAreaCallbackStruct *cbs);
-static void resizeCB(Widget w,XtPointer client_data,GLwDrawingAreaCallbackStruct *cbs);
-static void inputCB(Widget w,XtPointer client_data,GLwDrawingAreaCallbackStruct *cbs);
-static void byeCB(Widget w,XtPointer client_data,XtPointer call_data);
-static void aboutCB(Widget w,XtPointer client_data,XtPointer call_data);
-static char* showvisualclass(int cls);
-
-
-
-/* Sample application */
-int main(int argc, char *argv[]){
-  char *thevisual;
-  XVisualInfo vi;
-  int nvisinfos,visid,n;
-  Arg args[30];
-  Widget pane,cascade,but;
-
-  /*
-  ** Initialize toolkit
-  ** We do *not* use XtAppInitialize as we want to figure visual and
-  ** colormap BEFORE we create the top level shell!!!
-  */
-  XtToolkitInitialize();
-
-  /* Make application context */
-  app_context=XtCreateApplicationContext();
-
-  /* Try open display */
-  display=XtOpenDisplay(app_context,NULL,"boilerPlate","BoilerPlate",NULL,0,&argc,argv);
-
-  /* Report failure */
-  if(!display){
-    fprintf(stderr,"Unable to open the specified display.\n");
-    fprintf(stderr,"Set your `DISPLAY' environment variable properly or\n");
-    fprintf(stderr,"use the `xhost' command to authorize access to the display.\n");
-    exit(1);
-    }
-
-  /* Check for extension; for Mesa, this is always cool */
-  if(!glXQueryExtension(display,NULL,NULL)){
-    fprintf(stderr,"The specified display does not support the OpenGL extension\n");
-    exit(1);
-    }
-
-  /* Init with default visual and colormap */
-  gui_visual=DefaultVisual(display,0);
-  gui_colormap=DefaultColormap(display,0);
-  gl_colormap=DefaultColormap(display,0);
-
-  /* User insists on a specific visual */
-  if((thevisual=getenv("SETVISUAL"))!=NULL){
-    if(sscanf(thevisual,"%x",&visid)==1){
-      vi.visualid=visid;
-      gl_visualinfo=XGetVisualInfo(display,VisualIDMask,&vi,&nvisinfos);
-      }
-    else{
-      fprintf(stderr,"Please set the `SETVISUAL' variable in hexadecimal\n");
-      fprintf(stderr,"Use one of the Visual ID's reported by `xdpyinfo'\n");
-      exit(1);
-      }
-    }
-
-  /* Find visual the regular way */
-  else{
-    gl_visualinfo=glXChooseVisual(display,DefaultScreen(display),glxConfig);
-    }
-
-  /* Make sure we have a visual */
-  if(!gl_visualinfo){
-    fprintf(stderr,"Unable to obtain visual for graphics\n");
-    exit(1);
-    }
-
-  /* Show what visual is being used */
-  fprintf(stderr,"Using the following visual:\n");
-  fprintf(stderr,"  visualid: %lx\n",gl_visualinfo->visualid);
-  fprintf(stderr,"     depth: %d\n",gl_visualinfo->depth);
-  fprintf(stderr,"    screen: %d\n",gl_visualinfo->screen);
-  fprintf(stderr,"  bits/rgb: %d\n",gl_visualinfo->bits_per_rgb);
-  fprintf(stderr,"     class: %s\n",showvisualclass(gl_visualinfo->c_class));
-
-  /*
-  ** If not using default visual, we need a colormap for this visual.
-  ** Yes, the GL widget can allocate one itself, but we want to make
-  ** sure the GUI and the 3D have the same one (if hardware does not
-  ** allow more than one simultaneously).
-  ** This prevents nasty flashing when the window with the 3D widget
-  ** looses the focus.
-  */
-  if(gl_visualinfo->visual!=DefaultVisual(display,0)){
-    fprintf(stderr,"Making another colormap\n");
-    gl_colormap=XCreateColormap(display,
-                                RootWindow(display,0),
-                                gl_visualinfo->visual,
-                                AllocNone);
-    if(!gl_colormap){
-      fprintf(stderr,"Unable to create private colormap\n");
-      exit(1);
-      }
-    }
-
-  /*
-  ** Use common visual for GUI and GL?
-  ** Maybe you can invoke some hardware interrogation function and
-  ** see if more than one hardware map is supported.  For the purpose
-  ** of this demo, we'll use an environment variable instead.
-  */
-  if(getenv("SAMEVISUAL")!=NULL){
-    gui_visual=gl_visualinfo->visual;
-    gui_colormap=gl_colormap;
-    }
-
-  fprintf(stderr,"GUI uses visual: %lx\n",XVisualIDFromVisual(gui_visual));
-
-  /* Create application shell, finally */
-  n=0;
-  XtSetArg(args[n],XmNvisual,gui_visual); n++;         /* Plug in that visual */
-  XtSetArg(args[n],XmNcolormap,gui_colormap); n++;     /* And that colormap */
-  toplevel=XtAppCreateShell("boilerPlate","BoilerPlate",
-                            applicationShellWidgetClass,display,args,n);
-
-
-  /* Main window */
-  n=0;
-  mainwindow=XmCreateMainWindow(toplevel,"window",args,n);
-  XtManageChild(mainwindow);
-
-  /* Make a menu */
-  n=0;
-  XtSetArg(args[n],XmNmarginWidth,0); n++;
-  XtSetArg(args[n],XmNmarginHeight,0); n++;
-  menubar=XmCreateMenuBar(mainwindow,"menubar",args,2);
-  XtManageChild(menubar);
-
-  n=0;
-  pane=XmCreatePulldownMenu(menubar,"pane",args,n);
-  n=0;
-  but=XmCreatePushButton(pane,"Open",args,n);
-  XtManageChild(but);
-  but=XmCreatePushButton(pane,"Save",args,n);
-  XtManageChild(but);
-  but=XmCreatePushButton(pane,"Save As",args,n);
-  XtManageChild(but);
-  but=XmCreatePushButton(pane,"Quit",args,n);
-  XtAddCallback(but,XmNactivateCallback,byeCB,(XtPointer)NULL);
-  XtManageChild(but);
-  XtSetArg(args[0],XmNsubMenuId,pane);
-  cascade=XmCreateCascadeButton(menubar,"File",args,1);
-  XtManageChild(cascade);
-
-  n=0;
-  pane=XmCreatePulldownMenu(menubar,"pane",args,n);
-  n=0;
-  but=XmCreatePushButton(pane,"About",args,n);
-  XtAddCallback(but,XmNactivateCallback,aboutCB,(XtPointer)NULL);
-  XtManageChild(but);
-  XtSetArg(args[0],XmNsubMenuId,pane);
-  cascade=XmCreateCascadeButton(menubar,"Help",args,1);
-  XtManageChild(cascade);
-  XtVaSetValues(menubar,XmNmenuHelpWidget,cascade,NULL);
-
-  /* Main window form */
-  n=0;
-  XtSetArg(args[n],XmNmarginWidth,5); n++;
-  XtSetArg(args[n],XmNmarginHeight,5); n++;
-  mainform=XmCreateForm(mainwindow,"mainForm",args,n);
-  XtManageChild(mainform);
-
-  /* Some nice button */
-  n=0;
-  XtSetArg(args[n],XmNbottomAttachment,XmATTACH_FORM); n++;
-  XtSetArg(args[n],XmNrightAttachment,XmATTACH_FORM); n++;
-  button=XmCreatePushButton(mainform,"Bye",args,n);
-  XtAddCallback(button,XmNactivateCallback,byeCB,(XtPointer)NULL);
-  XtManageChild(button);
-
-  n=0;
-  XtSetArg(args[n],XmNleftAttachment,XmATTACH_FORM); n++;
-  XtSetArg(args[n],XmNrightAttachment,XmATTACH_FORM); n++;
-  XtSetArg(args[n],XmNbottomAttachment,XmATTACH_WIDGET); n++;
-  XtSetArg(args[n],XmNbottomWidget,button); n++;
-  XtSetArg(args[n],XmNshadowType,XmSHADOW_ETCHED_IN); n++;
-  separator=XmCreateSeparator(mainform,"separator",args,n);
-  XtManageChild(separator);
-
-  /* Main window frame */
-  n = 0;
-  XtSetArg(args[n],XmNleftAttachment,XmATTACH_FORM); n++;
-  XtSetArg(args[n],XmNrightAttachment,XmATTACH_FORM); n++;
-  XtSetArg(args[n],XmNtopAttachment,XmATTACH_FORM); n++;
-  XtSetArg(args[n],XmNbottomAttachment,XmATTACH_WIDGET); n++;
-  XtSetArg(args[n],XmNbottomWidget,separator); n++;
-  XtSetArg(args[n],XmNshadowType,XmSHADOW_IN); n++;
-  mainframe = XmCreateFrame(mainform,"mainFrame",args,n);
-  XtManageChild(mainframe);
-
-  /* GL drawing area */
-  n = 0;
-  XtSetArg(args[n],XmNcolormap,gl_colormap); n++;
-  XtSetArg(args[n],GLwNvisualInfo,gl_visualinfo); n++;
-  XtSetArg(args[n],GLwNinstallColormap,True); n++;
-  XtSetArg(args[n],XmNtraversalOn,True); n++;
-  XtSetArg(args[n],XmNwidth,400); n++;
-  XtSetArg(args[n],XmNheight,300); n++;
-  glwidget = GLwCreateMDrawingArea(mainframe,"glWidget",args,n);
-  XtAddCallback(glwidget,GLwNexposeCallback,(XtCallbackProc)exposeCB,(XtPointer)NULL);
-  XtAddCallback(glwidget,GLwNresizeCallback,(XtCallbackProc)resizeCB,(XtPointer)NULL);
-  XtAddCallback(glwidget,GLwNginitCallback,(XtCallbackProc)initCB,(XtPointer)NULL);
-  XtAddCallback(glwidget,GLwNinputCallback,(XtCallbackProc)inputCB,(XtPointer)NULL);
-  XtManageChild(glwidget);
-
-  /* Set into main window */
-  XmMainWindowSetAreas(mainwindow,menubar,NULL,NULL,NULL,mainform);
-  XtRealizeWidget(toplevel);
-
-  /* Loop until were done */
-  XtAppMainLoop(app_context);
-  return 0;
-  }
-
-
-/* Show visual class */
-static char* showvisualclass(int cls){
-  if(cls==TrueColor) return "TrueColor";
-  if(cls==DirectColor) return "DirectColor";
-  if(cls==PseudoColor) return "PseudoColor";
-  if(cls==StaticColor) return "StaticColor";
-  if(cls==GrayScale) return "GrayScale";
-  if(cls==StaticGray) return "StaticGray";
-  return "Unknown";
-  }
-
-
-static void exposeCB(Widget w,XtPointer client_data,GLwDrawingAreaCallbackStruct *cbs){
-  GLwDrawingAreaMakeCurrent(glwidget,glx_context);
-
-  glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT);
-  glMatrixMode(GL_PROJECTION);
-
-  glLoadIdentity();
-  glOrtho(-1.0,1.0,-1.0,1.0,0.0,1.0);
-
-  glMatrixMode(GL_MODELVIEW);
-
-  glLoadIdentity();
-
-  glColor3f(1.0,0.0,0.0);
-  glBegin(GL_LINE_STRIP);
-  glVertex3f(-1.0,-1.0,0.0);
-  glVertex3f( 1.0, 1.0,0.0);
-  glEnd();
-  glXSwapBuffers(display,XtWindow(glwidget));
-  }
-
-
-/* Initialize widget */
-static void initCB(Widget w,XtPointer client_data,GLwDrawingAreaCallbackStruct *cbs){
-
-  /* First, create context. We prefer direct rendering */
-  glx_context=glXCreateContext(display,gl_visualinfo,0,TRUE);
-  if(!glx_context){
-    fprintf(stderr,"Unable to create gl context\n");
-    exit(1);
-    }
-
-  /* Make it current */
-  GLwDrawingAreaMakeCurrent(glwidget,glx_context);
-
-  /* Set a viewport */
-  glViewport(0,0,cbs->width,cbs->height);
-
-  /* You might want to do a lot more here ... */
-  glEnable(GL_DEPTH_TEST);
-  glDepthFunc(GL_LEQUAL);
-  glClearColor(1.0,1.0,1.0,1.0);
-  glClearDepth(1.0);
-
-
-  }
-
-
-/* Widget changed size, so adjust txform */
-static void resizeCB(Widget w,XtPointer client_data,GLwDrawingAreaCallbackStruct *cbs){
-  GLwDrawingAreaMakeCurrent(glwidget,glx_context);
-  glViewport(0,0,cbs->width,cbs->height);
-
-  /* blablabla */
-  }
-
-
-/* Boilerplate event handling */
-static void inputCB(Widget w,XtPointer client_data,GLwDrawingAreaCallbackStruct *cbs){
-  switch(cbs->event->type){
-    case ButtonPress:
-      switch(cbs->event->xbutton.button){
-        case Button1: fprintf(stderr,"Pressed 1\n"); break;
-        case Button2: fprintf(stderr,"Pressed 2\n"); break;
-        case Button3: fprintf(stderr,"Pressed 3\n"); break;
-        }
-      break;
-    case ButtonRelease:
-      switch(cbs->event->xbutton.button){
-        case Button1: fprintf(stderr,"Released 1\n"); break;
-        case Button2: fprintf(stderr,"Released 2\n"); break;
-        case Button3: fprintf(stderr,"Released 3\n"); break;
-        }
-      break;
-    case MotionNotify:
-      fprintf(stderr,"Moved mouse to (%d %d)\n",
-              cbs->event->xbutton.x,
-              cbs->event->xbutton.y);
-      break;
-    }
-  }
-
-
-/* Hasta la vista, baby */
-static void byeCB(Widget w,XtPointer client_data,XtPointer call_data){
-  exit(0);
-  }
-
-
-/* Pop informative panel */
-static void aboutCB(Widget w,XtPointer client_data,XtPointer call_data){
-  Arg args[10];
-  XmString str;
-  Widget box;
-  str=XmStringCreateLtoR("Boilerplate Mixed Model Programming Example\n\n   (C) 1996 Jeroen van der Zijp \n\n    jvz@cyberia.cfdrc.com",XmSTRING_DEFAULT_CHARSET);
-  XtSetArg(args[0],XmNnoResize,True);
-  XtSetArg(args[1],XmNautoUnmanage,True);
-  XtSetArg(args[2],XmNmessageString,str);
-  XtSetArg(args[3],XmNdefaultPosition,False);
-  box=XmCreateInformationDialog(toplevel,"About Boilerplate",args,4);
-  XtManageChild(box);
-  XtUnmanageChild(XmMessageBoxGetChild(box,XmDIALOG_HELP_BUTTON));
-  XtUnmanageChild(XmMessageBoxGetChild(box,XmDIALOG_CANCEL_BUTTON));
-  XmStringFree(str);
-  }