ENTRYPOINT void init_hypertorus(ModeInfo *mi) { hypertorusstruct *hp; if (hyper == NULL) { hyper = (hypertorusstruct *)calloc(MI_NUM_SCREENS(mi), sizeof(hypertorusstruct)); if (hyper == NULL) return; } hp = &hyper[MI_SCREEN(mi)]; hp->trackballs[0] = gltrackball_init(); hp->trackballs[1] = gltrackball_init(); hp->current_trackball = 0; hp->button_pressed = False; /* make multiple screens rotate at slightly different rates. */ hp->speed_scale = 0.9 + frand(0.3); if ((hp->glx_context = init_GL(mi)) != NULL) { reshape_hypertorus(mi,MI_WIDTH(mi),MI_HEIGHT(mi)); glDrawBuffer(GL_BACK); init(mi); } else { MI_CLEARWINDOW(mi); } }
ENTRYPOINT void init_hypertorus(ModeInfo *mi) { hypertorusstruct *hp; MI_INIT(mi, hyper, NULL); hp = &hyper[MI_SCREEN(mi)]; hp->trackballs[0] = gltrackball_init(True); hp->trackballs[1] = gltrackball_init(True); hp->current_trackball = 0; hp->button_pressed = False; /* Set the display mode. */ if (!strcasecmp(mode,"wireframe") || !strcasecmp(mode,"0")) { display_mode = DISP_WIREFRAME; } else if (!strcasecmp(mode,"surface") || !strcasecmp(mode,"1")) { display_mode = DISP_SURFACE; } else if (!strcasecmp(mode,"transparent") || !strcasecmp(mode,"2")) { display_mode = DISP_TRANSPARENT; } else { display_mode = DISP_SURFACE; } /* Set the appearance. */ if (!strcasecmp(appear,"solid") || !strcasecmp(appear,"0")) { appearance = APPEARANCE_SOLID; } else if (!strcasecmp(appear,"bands") || !strcasecmp(appear,"1")) { appearance = APPEARANCE_BANDS; num_spirals = 0; } else if (!strcasecmp(appear,"spirals-1") || !strcasecmp(appear,"3")) { appearance = APPEARANCE_SPIRALS; num_spirals = 1; } else if (!strcasecmp(appear,"spirals-2") || !strcasecmp(appear,"4")) { appearance = APPEARANCE_SPIRALS; num_spirals = 2; } else if (!strcasecmp(appear,"spirals-4") || !strcasecmp(appear,"5")) { appearance = APPEARANCE_SPIRALS; num_spirals = 4; } else if (!strcasecmp(appear,"spirals-8") || !strcasecmp(appear,"6")) { appearance = APPEARANCE_SPIRALS; num_spirals = 8; } else if (!strcasecmp(appear,"spirals-16") || !strcasecmp(appear,"7")) { appearance = APPEARANCE_SPIRALS; num_spirals = 16; } else { appearance = APPEARANCE_BANDS; num_spirals = 0; } /* Set the color mode. */ if (!strcasecmp(color_mode,"twosided")) { colors = COLORS_TWOSIDED; } else if (!strcasecmp(color_mode,"colorwheel")) { colors = COLORS_COLORWHEEL; } else { colors = COLORS_COLORWHEEL; } /* Set the 3d projection mode. */ if (!strcasecmp(proj_3d,"perspective") || !strcasecmp(proj_3d,"0")) { projection_3d = DISP_3D_PERSPECTIVE; } else if (!strcasecmp(proj_3d,"orthographic") || !strcasecmp(proj_3d,"1")) { projection_3d = DISP_3D_ORTHOGRAPHIC; } else { projection_3d = DISP_3D_PERSPECTIVE; } /* Set the 4d projection mode. */ if (!strcasecmp(proj_4d,"perspective") || !strcasecmp(proj_4d,"0")) { projection_4d = DISP_4D_PERSPECTIVE; } else if (!strcasecmp(proj_4d,"orthographic") || !strcasecmp(proj_4d,"1")) { projection_4d = DISP_4D_ORTHOGRAPHIC; } else { projection_4d = DISP_4D_PERSPECTIVE; } /* make multiple screens rotate at slightly different rates. */ hp->speed_scale = 0.9 + frand(0.3); if ((hp->glx_context = init_GL(mi)) != NULL) { reshape_hypertorus(mi,MI_WIDTH(mi),MI_HEIGHT(mi)); glDrawBuffer(GL_BACK); init(mi); } else { MI_CLEARWINDOW(mi); } }