/***********************************************************************/ /* Open Visualization Data Explorer */ /* (C) Copyright IBM Corp. 1989,1999 */ /* ALL RIGHTS RESERVED */ /* This code licensed under the */ /* "IBM PUBLIC LICENSE - Open Visualization Data Explorer" */ /***********************************************************************/ #include <dxconfig.h> #define String dxString #define Object dxObject #define Angle dxAngle #define Matrix dxMatrix #define Screen dxScreen #define Boolean dxBoolean #include <dx/dx.h> #undef String #undef Object #undef Angle #undef Matrix #undef Screen #undef Boolean #include <X11/Xlib.h> #include <math.h> #include <stdlib.h> /* for getenv prototype */ #include <dxstereo.h> /************** Custom Stereo System Modes ********************** * One custom mode is demonstrated. It uses two viewports placed * diagonally in the original window. ****************************************************************/ static int demoInitializeStereoSystemMode(Display *, Window); static int demoExitStereoSystem(Display *, Window, Window, Window); static int demoCreateStereoWindows(Display *, Window, Window *, WindowInfo *, Window *, WindowInfo *); static StereoSystemMode _defaultStereoSystemModes[1]; int DXEntry(int *n, StereoSystemMode **ssms) { *ssms = _defaultStereoSystemModes; (*ssms)[0].initializeStereoSystemMode = demoInitializeStereoSystemMode; (*ssms)[0].exitStereo = demoExitStereoSystem; (*ssms)[0].createStereoWindows = demoCreateStereoWindows; *n = 1; return OK; } static int demoInitializeStereoSystemMode(Display *dpy, Window w) { return OK; } static int demoExitStereoSystem(Display *dpy, Window frame, Window left, Window right) { /* * neither of these should *ever* succeed ... we are using two * viewports in this demo, not child windows */ if (left != frame) XDestroyWindow(dpy, left); if (right != frame) XDestroyWindow(dpy, right); return OK; } Error demoCreateStereoWindows(Display *dpy, Window frame, Window *left, WindowInfo *leftWI, Window *right, WindowInfo *rightWI) { XWindowAttributes xwattr; XGetWindowAttributes(dpy, frame, &xwattr); *left = frame; leftWI->xOffset = 0; leftWI->yOffset = 0; leftWI->xSize = xwattr.width/2; leftWI->ySize = xwattr.height/2; leftWI->aspect = xwattr.height / xwattr.width; *right = frame; rightWI->xOffset = xwattr.width/2; rightWI->yOffset = xwattr.height/2; rightWI->xSize = xwattr.width/2; rightWI->ySize = xwattr.height/2; rightWI->aspect = xwattr.height / xwattr.width; return OK; }