// set up the graphics on the seperate CAVE displays void CaveDisplayDevice::cave_gl_init_fn(void) { setup_initial_opengl_state(); // do all OpenGL setup/initialization now // follow up with mode settings aaAvailable = TRUE; // enable antialiasing cueingAvailable = FALSE; // disable depth cueing cullingAvailable = FALSE; // disable culling // XXX need to test this still // ext->hasstereo = CAVEInStereo(); // stereo availability test ext->hasstereo = TRUE; // stereo is on initially ext->stereodrawforced = FALSE; // no need for forced stereo draws glClearColor(0.0, 0.0, 0.0, 0.0); // set clear color to black aa_on(); // force antialiasing on if possible cueing_off(); // force depth cueing off // set default settings set_sphere_mode(sphereMode); set_sphere_res(sphereRes); set_line_width(lineWidth); set_line_style(lineStyle); clear(); // clear screen update(); // swap buffers // we want the CAVE to be centered at the origin, and in the range -1, +1 (transMat.top()).translate(0.0, 3.0, -2.0); (transMat.top()).scale(VMD_PI); doneGLInit = TRUE; // only do this once }
// init ... open a window and set initial default values int OpenGLDisplayDevice::init(int argc, char **argv, VMDApp *app, int *size, int *loc) { vmdapp = app; // save VMDApp handle for use by drag-and-drop handlers // open the window if (open_window(name, size, loc, argc, argv) != 0) return FALSE; if (!have_window) return FALSE; // get screen size // XXX There's no Win32 API to get the full multi-monitor desktop, // so this code doesn't correctly handle multi-monitor systems yet. // To correctly handle multiple monitors, we'd have to // walk the device tree, take into account monitor layout/positioning, // and compute the desktop dimensions from that. Since these values // are currently only used by do_reposition_window() method, we can // live with primary-monitor values for the time being. screenX = GetSystemMetrics(SM_CXSCREEN); screenY = GetSystemMetrics(SM_CYSCREEN); // set flags for the capabilities of this display ext->hasmultisample = FALSE; // no code for this extension yet ext->nummultisamples = 0; aaAvailable = FALSE; // set default settings if (ext->hasmultisample) { aa_on(); // enable fast multisample based antialiasing by default // other antialiasing techniques are slow, so only multisample // makes sense to enable by default. } cueingAvailable = TRUE; cueing_on(); // leave depth cueing on by default, despite the speed hit. cullingAvailable = TRUE; culling_off(); set_sphere_mode(sphereMode); set_sphere_res(sphereRes); set_line_width(lineWidth); set_line_style(lineStyle); // reshape and clear the display, which initializes some other variables reshape(); normal(); clear(); update(); // successfully created window return TRUE; }
int OpenGLPbufferDisplayDevice::init(int argc, char **argv, VMDApp *app, int *size, int *loc) { vmdapp = app; // save VMDApp handle for use by drag-and-drop handlers // and GPU memory management routines // open the window glxsrv.windowID = open_window(name, size, loc, argc, argv); if (!have_window) return FALSE; // set flags for the capabilities of this display // whether we can do antialiasing or not. if (ext->hasmultisample) aaAvailable = TRUE; // we use multisampling over other methods else aaAvailable = FALSE; // no non-multisample implementation yet // set default settings if (ext->hasmultisample) { aa_on(); // enable fast multisample based antialiasing by default // other antialiasing techniques are slow, so only multisample // makes sense to enable by default. } cueingAvailable = TRUE; cueing_on(); // leave depth cueing on by default, despite the speed hit. cullingAvailable = TRUE; culling_off(); set_sphere_mode(sphereMode); set_sphere_res(sphereRes); set_line_width(lineWidth); set_line_style(lineStyle); // reshape and clear the display, which initializes some other variables reshape(); normal(); clear(); update(); // We have a window, return success. return TRUE; }
static void restoreGC(void) { GC_t *gc, *newGC; gc = curGC; newGC = gc->prev; if (gc->bold != newGC->bold) set_line_bold(newGC->bold); if (gc->style != newGC->style) set_line_style(newGC->style); if (!eqColor(&gc->color, &newGC->color)) { #ifdef HPDEBUG fprintf(stderr, "restore color\n"); #endif set_color(&newGC->color); } if (!eqFontInfo(&gc->font, &newGC->font)) setFont(&newGC->font); free(gc); curGC = newGC; }
int OpenGLDisplayDevice::init(int argc, char **argv, VMDApp* app, int *size, int *loc) { // open the window sdlsrv.windowID = open_window(name, size, loc, argc, argv); if (!have_window) return FALSE; // set flags for the capabilities of this display // whether we can do antialiasing or not. if (ext->hasmultisample) aaAvailable = TRUE; // we use multisampling over other methods else aaAvailable = FALSE; // no non-multisample implementation yet cueingAvailable = TRUE; cullingAvailable = TRUE; cullingEnabled = FALSE; // set default settings if (ext->hasmultisample) { aa_on(); // enable fast multisample based antialiasing by default // other antialiasing techniques are slow, so only multisample // makes sense to enable by default. } cueing_off(); // leave depth cueing off by default, since its a speed hit. set_sphere_mode(sphereMode); set_sphere_res(sphereRes); set_line_width(lineWidth); set_line_style(lineStyle); // reshape and clear the display, which initializes some other variables reshape(); normal(); clear(); update(); // successfully opened window. return TRUE; }
void set_line_style_defaults() { /* Line gap Line gap Line gap Line TERM */ set_line_style(-8, 25, 10, 0, 10, 10, 10, 0, 10, 25, -1); set_line_style(-7, 35, 10, 0, 10, 0, 10, 35, -1); set_line_style(-6, 25, 10, 10, 10, 10, 10, 25, -1); set_line_style(-5, 35, 10, 10, 10, 35, -1); set_line_style(-4, 40, 10, 0, 10, 40, -1); set_line_style(-3, 35, 30, 35, -1); set_line_style(-2, 25, 50, 25, -1); set_line_style(-1, 0, 100, 0, -1); set_line_style(0, 0, 100, -1); set_line_style(1, 0, 100, -1); set_line_style(2, 50, 50, -1); set_line_style(3, 70, 30, -1); set_line_style(4, 80, 10, 0, 10, -1); set_line_style(5, 70, 10, 10, 10, -1); set_line_style(6, 50, 10, 10, 10, 10, 10, -1); set_line_style(7, 70, 10, 0, 10, 0, 10, -1); set_line_style(8, 50, 10, 0, 10, 10, 10, 0, 10, -1); }
// constructor ... open a window and set initial default values FltkOpenGLDisplayDevice::FltkOpenGLDisplayDevice(int argc, char **argv, VMDApp *vmdapp_p, int *size, int *loc) : OpenGLRenderer((char *) "VMD " VMDVERSION " OpenGL Display") { vmdapp = vmdapp_p; // save VMDApp handle for use by drag-and-drop handlers, // and GPU memory management routines // set up data possible before opening window stereoNames = glStereoNameStr; stereoModes = OPENGL_STEREO_MODES; // GLSL is only available on MacOS X 10.4 and later. renderNames = glRenderNameStr; renderModes = OPENGL_RENDER_MODES; cacheNames = glCacheNameStr; cacheModes = OPENGL_CACHE_MODES; // open the window int SX = 100, SY = 100, W, H; W = size[0]; H = size[1]; if (loc) { SX = loc[0]; SY = loc[1]; } window = new myglwindow(SX, SY, W, H, name, this, vmdapp_p); ext->hasstereo = FALSE; // stereo is off initially ext->stereodrawforced = FALSE; // stereo not forced initially ext->hasmultisample = FALSE; // multisample is off initially int rc=0; // FLTK stereo support only started working for MacOS X at around version 1.1.7 #if (FL_MAJOR_VERSION >= 1) && (((FL_MINOR_VERSION >= 1) && (FL_PATCH_VERSION >= 7)) || ((FL_MINOR_VERSION >= 1) && (FL_PATCH_VERSION >= 7))) // find an appropriate visual and colormap ... if (getenv("VMDPREFERSTEREO") != NULL) { // Stereo limps along with FLTK 1.1.7 on MacOS X rc = window->mode(FL_RGB8 | FL_DOUBLE | FL_STENCIL | FL_STEREO); ext->hasstereo = TRUE; #if defined(__APPLE__) ext->stereodrawforced = TRUE; // forced draw in stereo all the time when on #endif // FLTK multisample antialiasing still doesn't actually work in // MacOS X as of FLTK 1.1.10... #if !defined(__APPLE__) // } else if (getenv("VMDPREFERMULTISAMPLE") != NULL) { } else if (rc != 0) { rc = window->mode(FL_RGB8 | FL_DOUBLE | FL_STENCIL | FL_MULTISAMPLE); ext->hasmultisample = TRUE; // FLTK only does SGI multisample, no ARB yet #endif } else { rc = window->mode(FL_RGB8 | FL_DOUBLE | FL_STENCIL); } #else // find an appropriate visual and colormap ... rc = window->mode(FL_RGB8 | FL_DOUBLE | FL_STENCIL); #endif window->show(); // (7) bind the rendering context to the window window->make_current(); // (8) actually request the window to be displayed screenX = Fl::w(); screenY = Fl::h(); // (9) configure the rendering properly setup_initial_opengl_state(); // setup initial OpenGL state // set flags for the capabilities of this display // whether we can do antialiasing or not. if (ext->hasmultisample) aaAvailable = TRUE; // we use multisampling over other methods else aaAvailable = FALSE; // no non-multisample implementation yet // set default settings if (ext->hasmultisample) { aa_on(); // enable fast multisample based antialiasing by default // other antialiasing techniques are slow, so only multisample // makes sense to enable by default. } cueingAvailable = TRUE; cueing_on(); // leave depth cueing on by default, despite the speed hit. cullingAvailable = TRUE; culling_off(); set_sphere_mode(sphereMode); set_sphere_res(sphereRes); set_line_width(lineWidth); set_line_style(lineStyle); // reshape and clear the display, which initializes some other variables reshape(); normal(); clear(); update(); }
void drvplot::show_rectangle(const float llx, const float lly, const float urx, const float ury) { set_line_style(); set_filling_and_edging_style(); (void)plotter->fbox(llx, lly, urx, ury); }
void drvplot::show_path() { set_line_style(); set_filling_and_edging_style(); print_coords(); }