Ejemplo n.º 1
0
void ProcessMenu(int value)
{
    switch(value)
    {
    case 1:
        useBlending = !useBlending;
        if (useBlending)
        {
            glutChangeToMenuEntry(1, "Toggle vertex blending (currently ON)", 1);
        }
        else
        {
            glutChangeToMenuEntry(1, "Toggle vertex blending (currently OFF)", 1);
        }
        break;

    case 2:
        showBones = !showBones;
        if (showBones)
        {
            glutChangeToMenuEntry(2, "Show bones (currently ON)", 2);
        }
        else
        {
            glutChangeToMenuEntry(2, "Show bones (currently OFF)", 2);
        }
        break;

    default:
        break;
    }

    // Refresh the Window
    glutPostRedisplay();
}
Ejemplo n.º 2
0
void
it(int value)
{
  glutDestroyWindow(glutGetWindow());
  printf("menu selection: win=%d, menu=%d\n", glutGetWindow(), glutGetMenu());
  switch (value) {
  case 1:
    if (list == 1) {
      list = 2;
    } else {
      list = 1;
    }
    break;
  case 2:
    exit(0);
    break;
  case 3:
    glutAddMenuEntry("new entry", value + 9);
    break;
  case 4:
    glutChangeToMenuEntry(1, "toggle it for drawing", 1);
    glutChangeToMenuEntry(3, "motion done", 3);
    glutIdleFunc(idle);
    break;
  case 5:
    glutIdleFunc(NULL);
    break;
  case 6:
    glutTimerFunc(2000, delayed_stop, 0);
    break;
  default:
    printf("value = %d\n", value);
  }
}
Ejemplo n.º 3
0
void
menu(int item)
{
  switch (item) {
  case ADD_PLANE:
    add_plane();
    break;
  case REMOVE_PLANE:
    remove_plane();
    break;
  case MOTION_ON:
    moving = GL_TRUE;
    glutChangeToMenuEntry(3, "Motion off", MOTION_OFF);
    glutIdleFunc(animate);
    break;
  case MOTION_OFF:
    moving = GL_FALSE;
    glutChangeToMenuEntry(3, "Motion", MOTION_ON);
    glutIdleFunc(NULL);
    break;
  case QUIT:
    exit(0);
    break;
  }
}
Ejemplo n.º 4
0
/*ARGSUSED1*/
void
key(unsigned char key, int x, int y)
{
    switch (key) {
    case '\033':
    case 'q':
    case 'Q':
	exit(EXIT_SUCCESS);

    case '+':
	if (maxPoints < 65536 && !useStrokes) {
	    maxPoints *= 2;
	    makepoints();
	}
	break;
    case '-':
	if (maxPoints > 64 && !useStrokes) {
	    maxPoints /= 2;
	    makepoints();
	}
	break;
    case 'e':
    case 'E':
	if (canDrawEdges)
	    drawEdges = !drawEdges;
	break;
    case 'i':
    case 'I':
	viewImage = !viewImage;
	glutChangeToMenuEntry(useStrokes ? 1 : 4, viewImage ? "View artistic image ('i')" : "View source image ('i')", 'i');
	break;
    case 'r':
    case 'R':
	if (!useStrokes)
	    makepoints();
	break;

    case 's':
    case 'S':
	useStrokes = !useStrokes;
	glutSetMenu(useStrokes ? strokeMenu : sampleMenu);
	if (viewImage)
	    glutChangeToMenuEntry(useStrokes ? 1 : 3, "View artistic image ('i')", 'i');

	if (useStrokes) {
	    maxPoints = 65536;
	    free(points);
	    points = (Point *) malloc(maxPoints * sizeof(Point));
	    numPoints = 0;
	} else {
	    maxPoints = 2048;
	    makepoints();
	}
	break;

    default:
	return;
    }
    glutPostRedisplay();
}
Ejemplo n.º 5
0
void menu(int opcao)
{

	switch (opcao) {
	case 0 :
		exit(1);
		break;
		// velocidade bola
	case 1 :
		if(modelo.bola.velocidade>2)
			modelo.bola.velocidade-=2;
		break;
	case 2 :
		if(modelo.bola.velocidade<16)
			modelo.bola.velocidade+=2;
		break;
		// tamanho bola
	case 3 :
		if(modelo.bola.tamanho>5)
			modelo.bola.tamanho--;
		break;
	case 4 :
		if(modelo.bola.tamanho<15)
			modelo.bola.tamanho++;
		break;
		// velocidade raquete
	case 5 :
		if(modelo.velocidadeRaquetes>10)
			modelo.velocidadeRaquetes-=5;
		break;
	case 6 :
		if(modelo.velocidadeRaquetes<30)
			modelo.velocidadeRaquetes+=5;
		break;
		// tamanho raquete
	case 7 :
		if(modelo.alturaRaquetes>30)
			modelo.alturaRaquetes-=10;
		break;
	case 8 :
		if(modelo.velocidadeRaquetes<100)
			modelo.alturaRaquetes+=10;
		break;
	case 9 :
		modelo.parado=!modelo.parado;
		if(modelo.parado)
		{
			glutChangeToMenuEntry(1,"Começar",9);
			glutPostRedisplay();
		}
		else
		{
			glutChangeToMenuEntry(1,"Parar",9);
		}
		break;
	}

}
Ejemplo n.º 6
0
/*
 * Defines what each key does
 */
void CLGLWindowKeyboard(unsigned char key, int x, int y)
{
  //this way we can exit the program cleanly
  switch(key)
  {
    // ---------- //
    // QUIT CASES //
    // ---------- //
    case '\033': // escape quits
    case '\015': // Enter quits    
    case 'Q':    // Q quits
    case 'q':    // q (or escape) quits
      // Cleanup up and quit
      CLGLWindowDestroy();
      break;
    // ------------------ //
    // PLAY / PAUSE CASES //
    // ------------------ //
    case ' ':
      if(CLGLWindow::play == ON){
        CLGLWindow::play = OFF;   //Play Pause Button
        glutChangeToMenuEntry(1, "Play", PLAY);
      }
      else{
        CLGLWindow::play = ON;
        glutChangeToMenuEntry(1, "Pause", PLAY);
      }
      break;
    // --------------- //
    // Show Info Cases //
    // --------------- //
    case 'i':
    case 'I':
      if(CLGLWindow::showInfo == ON){
        CLGLWindow::showInfo = OFF;
        glutChangeToMenuEntry(2, "Show Info", INFO);
      }
      else{
        CLGLWindow::showInfo = ON;
        glutChangeToMenuEntry(2, "Hide Info", INFO);
      }
      break;
    // ------------------ //
    // Refresh Rate Cases //
    // ------------------ //
    case 'l':
    case 'L':
      CLGLWindow::refreshRate++;
      break;
    case 'j':
    case 'J':
      CLGLWindow::refreshRate--;
      if(CLGLWindow::refreshRate <= 0)
        CLGLWindow::refreshRate = 1;
      break;
  }
}
Ejemplo n.º 7
0
void stencilDecalEnable(int enabled)
{
    glutSetMenu(mainMenu);
    if(enabled){
	glutChangeToMenuEntry(1, "Turn off stencil decal", 0);
	printf("Stencil decaling turned on\n");
	glutPostRedisplay();
    } else {
	glutChangeToMenuEntry(1, "Turn on stencil decal", 1);
	printf("Stencil decaling turned off\n");
	glutPostRedisplay();
    }
    useStencil = enabled;
}
Ejemplo n.º 8
0
Archivo: dark.c Proyecto: xtmacbook/SGI
/*ARGSUSED1*/
void 
cbKeyboard(unsigned char key, int x, int y)
{
    switch (key) {
    case 27:
    case 'q':
	exit(0);

    case 'l':
    case 'L':
	point = !point;
	glLightf(GL_LIGHT1, GL_SPOT_CUTOFF, point ? 180.0 : 60.0);
	glLightf(GL_LIGHT2, GL_SPOT_CUTOFF, point ? 180.0 : 60.0);
	glutChangeToMenuEntry(1, point ? "Change to spotlights ('l')"
			      : "Change to point lights ('l')", 'l');
	break;
    case 'w':
    case 'W':
	drawMode = (drawMode == GL_FILL) ? GL_LINE : GL_FILL;
	break;

    default:
	return;
    }
    glutPostRedisplay();
}
Ejemplo n.º 9
0
void GLUTCALLBACK Motion(int x,int y)
{
   switch(buttonDown) {
      case GLUT_LEFT_BUTTON:
         pos[X_AXIS]-=(x-beginX)*MOUSE_SCALE;
         pos[Z_AXIS]-=(y-beginY)*MOUSE_SCALE;
         break;
      case GLUT_RIGHT_BUTTON:
         yAngle+=(x-beginX)*MOUSE_SCALE;
         xAngle+=(y-beginY)*MOUSE_SCALE;
         {
            char buf[40];
            sprintf(buf,"Angle: %+.1f",yAngle);
            glutChangeToMenuEntry(3,buf,3);
         }
         break;
   }
   beginX=x;
   beginY=y;
#ifdef HAVE_GLUTCAVE
   GLUTCAVE_REDISPLAY();
#else
   glutPostRedisplay();
#endif
}
Ejemplo n.º 10
0
/*ARGSUSED1*/
void 
cbKeyboard(unsigned char key, int x, int y)
{
    switch (key) {
    case 27:
    case 'q':
	exit(0);

    case 'm':
    case 'M':
	glBindTexture(GL_TEXTURE_2D, texName[1]);
	break;
    case 's':
    case 'S':
	glBindTexture(GL_TEXTURE_2D, texName[0]);
	break;
    case 't':
    case 'T':
	showTexture = !showTexture;
	glutChangeToMenuEntry(4, showTexture ? "Show object ('t')" : "Show texture ('t')", 't');
	break;
    case 'w':
    case 'W':
	drawMode = (drawMode == GL_FILL) ? GL_LINE : GL_FILL;
	break;

    default:
	return;
    }
    glutPostRedisplay();
}
Ejemplo n.º 11
0
void ProcessMenu(int value)
{
  switch(value)
  {
  case 1:
    occlusionDetection = !occlusionDetection;
    if (occlusionDetection)
    {
      glutChangeToMenuEntry(1, "Toogle occlusion culling(currently ON", 1);
    }
    else
    {
      glutChangeToMenuEntry(1, "Toogle occlusion culling(currently OFF", 1);
    }
    break;
  }

  glutPostRedisplay();
}
Ejemplo n.º 12
0
void toggleMotionBlur(void)
{
    useMotionBlur = !useMotionBlur;

    if (useMotionBlur)
    {
        glutChangeToMenuEntry(2, "Toggle motion blur (currently ON)", 2);
        glActiveTexture(GL_TEXTURE1);
        glLoadIdentity();
        glActiveTexture(GL_TEXTURE2);
        glEnable(GL_TEXTURE_2D);
    }
    else
    {
        glutChangeToMenuEntry(2, "Toggle motion blur (currently OFF)", 2);
        glActiveTexture(GL_TEXTURE2);
        glDisable(GL_TEXTURE_2D);
    }
}
Ejemplo n.º 13
0
void
toggleSolve(void)
{
    if (solving) {
      freeSolutions();
      solving = 0;
      glutChangeToMenuEntry(1, "Solving", 1);
      glutSetWindowTitle("glpuzzle");
      movingPiece = 0;
    } else {
      glutChangeToMenuEntry(1, "Stop solving", 1);
      glutSetWindowTitle("Solving...");
      if (solvePuzzle()) {
        solving = 1;
      }
    }
    changeState();
    glutPostRedisplay();
}
Ejemplo n.º 14
0
void GLUTCALLBACK Special(int key,int x,int y)
{
   char buf[40];
   glutSetMenu(controlMID);
   switch(key) {
      case GLUT_KEY_LEFT:
         pos[X_AXIS]+=TRANSLATE_DELTA;
         sprintf(buf,"Pos:   %+.1f,%+.1f,%+.1f",pos[0],pos[1],pos[2]);
         glutChangeToMenuEntry(2,buf,2);
         break;
      case GLUT_KEY_RIGHT:
         pos[X_AXIS]-=TRANSLATE_DELTA;
         sprintf(buf,"Pos:   %+.1f,%+.1f,%+.1f",pos[0],pos[1],pos[2]);
         glutChangeToMenuEntry(2,buf,2);
         break;
      case GLUT_KEY_UP:
         pos[Z_AXIS]+=TRANSLATE_DELTA;
         sprintf(buf,"Pos:   %+.1f,%+.1f,%+.1f",pos[0],pos[1],pos[2]);
         glutChangeToMenuEntry(2,buf,2);
         break;
      case GLUT_KEY_DOWN:
         pos[Z_AXIS]-=TRANSLATE_DELTA;
         sprintf(buf,"Pos:   %+.1f,%+.1f,%+.1f",pos[0],pos[1],pos[2]);
         glutChangeToMenuEntry(2,buf,2);
         break;
      case GLUT_KEY_PAGE_UP:
         pos[Y_AXIS]-=TRANSLATE_DELTA;
         sprintf(buf,"Pos:   %+.1f,%+.1f,%+.1f",pos[0],pos[1],pos[2]);
         glutChangeToMenuEntry(2,buf,2);
         break;
      case GLUT_KEY_PAGE_DOWN:
         pos[Y_AXIS]+=TRANSLATE_DELTA;
         sprintf(buf,"Pos:   %+.1f,%+.1f,%+.1f",pos[0],pos[1],pos[2]);
         glutChangeToMenuEntry(2,buf,2);
         break;
      case GLUT_KEY_HOME:
         rotAxis[axis]+=AXIS_DELTA;
         sprintf(buf,"Axis:  %+.1f,%+.1f,%+.1f",rotAxis[0],rotAxis[1],rotAxis[2]);
         glutChangeToMenuEntry(4,buf,4);
         break;
      case GLUT_KEY_END:
         rotAxis[axis]-=AXIS_DELTA;
         sprintf(buf,"Axis:  %+.1f,%+.1f,%+.1f",rotAxis[0],rotAxis[1],rotAxis[2]);
         glutChangeToMenuEntry(4,buf,4);
         break;
   }
#ifdef HAVE_GLUTCAVE
   GLUTCAVE_REDISPLAY();
#else
   glutPostRedisplay();
#endif
}
Ejemplo n.º 15
0
void ProcessMenu(int value)
{
    switch(value)
    {
    case 1:
        noShadows = !noShadows;
        showShadowMap = GL_FALSE;
        if (noShadows)
        {
            glutChangeToMenuEntry(1, "Toggle shadows (currently OFF)", 1);
        }
        else
        {
            glutChangeToMenuEntry(1, "Toggle shadows (currently ON)", 1);
        }
        glutChangeToMenuEntry(2, "Toggle show shadowmap (currently OFF)", 2);
        break;

    case 2:
        showShadowMap = !showShadowMap;
        noShadows = GL_FALSE;
        if (showShadowMap)
        {
            glutChangeToMenuEntry(2, "Toggle show shadowmap (currently ON)", 2);
        }
        else
        {
            glutChangeToMenuEntry(2, "Toggle show shadowmap (currently OFF)", 2);
        }
        glutChangeToMenuEntry(1, "Toggle shadows (currently ON)", 1);
        break;

    case 3:
        controlCamera = !controlCamera;
        if (controlCamera)
        {
            glutChangeToMenuEntry(3, "Switch to LIGHT control (currently CAMERA)", 3);
        }
        else
        {
            glutChangeToMenuEntry(3, "Switch to CAMERA control (currently LIGHT)", 3);
        }
        break;

    default:
        break;
    }

    // Refresh the Window
    glutPostRedisplay();
}
Ejemplo n.º 16
0
void
menu(int choice)
{
  /* simple GLUT popup menu stuff */
  switch (choice) {
  case SPIN_ON:
    glutChangeToMenuEntry(1, "Random Spin OFF", SPIN_OFF);
    glutIdleFunc(animate);
    break;
  case SPIN_OFF:
    glutChangeToMenuEntry(1, "Random Spin ON", SPIN_ON);
    glutIdleFunc(NULL);
    break;
  case MENU_HELP:
    printCheatSheet();
    break;
  case MENU_EXIT:
    exit(0);
    break;
  }
}
Ejemplo n.º 17
0
void togglePBOs(void)
{
    usePBOs = !usePBOs;

    if (usePBOs)
    {
        glutChangeToMenuEntry(1, "Toggle PBO usage (currently ON)", 1);

        // first upload client memory to PBOs, then free them
        for (int i = 0; i < 3; i++)
        {
            glBindBuffer(GL_PIXEL_PACK_BUFFER, i+1);
            glBufferData(GL_PIXEL_PACK_BUFFER, dataHeight * dataPitch, pixels[i], usageHint);

            assert(pixels[i]);
            free(pixels[i]);
            pixels[i] = NULL;
        }
        glBindBuffer(GL_PIXEL_PACK_BUFFER, 0);
    }
    else
    {
        glutChangeToMenuEntry(1, "Toggle PBO usage (currently OFF)", 1);

        // allocate read buffer, size of window
        for (int i = 0; i < 3; i++)
        {
            assert(!pixels[i]);
            pixels[i] = (GLubyte*)malloc(dataHeight * dataPitch);
            assert(pixels[i]);

            // upload PBO data, then delete
            glBindBuffer(GL_PIXEL_PACK_BUFFER, i+1);
            glGetBufferSubData(GL_PIXEL_PACK_BUFFER, 0, dataHeight * dataPitch, pixels[i]);
        }
        GLuint names[3] = {1, 2, 3};
        glBindBuffer(GL_PIXEL_PACK_BUFFER, 0);
        glDeleteBuffers(3, names);
    }
}
Ejemplo n.º 18
0
/*
 * Menus Handler Function
 */
void CLGLWindowMenus(int value)
{
  switch(value){
    case PLAY: 
      if(CLGLWindow::play == ON){
        CLGLWindow::play = OFF;   //Play Pause Button
        glutChangeToMenuEntry(1, "Play", PLAY);
      }
      else{
        CLGLWindow::play = ON;
        glutChangeToMenuEntry(1, "Pause", PLAY);
      }
      break;
    case INFO:
      if(CLGLWindow::showInfo == ON){
        CLGLWindow::showInfo = OFF;
        glutChangeToMenuEntry(2, "Show Info", INFO);
      }
      else{
        CLGLWindow::showInfo = ON;
        glutChangeToMenuEntry(2, "Hide Info", INFO);
      }
      break;
    case RK1:
      (*CLGLSim::rkx)[0] = (*CLGLSim::rkx)[1];
      CLGLSim::curKernel = 1;
      break;
    case RK2:
      (*CLGLSim::rkx)[0] = (*CLGLSim::rkx)[2];
      CLGLSim::curKernel = 2;
      break;
    case RK4:
      (*CLGLSim::rkx)[0] = (*CLGLSim::rkx)[3];
      CLGLSim::curKernel = 4;
      break;
    case QUIT:
      CLGLWindowDestroy();
      break;
  }
}
Ejemplo n.º 19
0
void reset(void)
{
    if (solving) {
      freeSolutions();
      solving = 0;
      glutChangeToMenuEntry(1, "Solving", 1);
      movingPiece = 0;
      changeState();
    }
    glutSetWindowTitle("glpuzzle");
    memcpy(thePuzzle, startConfig, HEIGHT * WIDTH);
    glutPostRedisplay();
}
Ejemplo n.º 20
0
void ProcessMenu(int value)
{
    switch(value)
    {
    case 1:
        useVertexShader = !useVertexShader;
        if (useVertexShader)
        {
            glutChangeToMenuEntry(1, "Toggle vertex shader (currently ON)", 1);
            glAttachShader(progObj, vShader);
        }
        else
        {
            glutChangeToMenuEntry(1, "Toggle vertex shader (currently OFF)", 1);
            glDetachShader(progObj, vShader);
        }

        Relink();
        break;

    case 2:
        useFragmentShader = !useFragmentShader;
        if (useFragmentShader)
        {
            glutChangeToMenuEntry(2, "Toggle fragment shader (currently ON)", 2);
            glAttachShader(progObj, fShader);
        }
        else
        {
            glutChangeToMenuEntry(2, "Toggle fragment shader (currently OFF)", 2);
            glDetachShader(progObj, fShader);
        }

        Relink();
        break;

    case 3:
        doBlink = !doBlink;
        if (doBlink)
        {
            glutChangeToMenuEntry(3, "Toggle flicker (currently ON)", 3);
        }
        else
        {
            glutChangeToMenuEntry(3, "Toggle flicker (currently OFF)", 3);
        }
        if (!doBlink && (flickerLocation != -1))
            glUniform1f(flickerLocation, 1.0f);
        break;

    default:
        break;
    }

    // Refresh the Window
    glutPostRedisplay();
}
Ejemplo n.º 21
0
void
keyboard(unsigned char c, int x, int y)
{
  int piece;

  switch (c) {
  case 27:
    exit(0);
    break;
  case 'D':
  case 'd':
    if (solving) {
      freeSolutions();
      solving = 0;
      glutChangeToMenuEntry(1, "Solving", 1);
      glutSetWindowTitle("glpuzzle");
      movingPiece = 0;
      changeState();
    }
    piece = selectPiece(x, y);
    if (piece) {
      nukePiece(piece);
    }
    glutPostRedisplay();
    break;
  case 'R':
  case 'r':
    reset();
    break;
  case 'S':
  case 's':
    toggleSolve();
    break;
  case 'b':
  case 'B':
    depth = 1 - depth;
    if (depth) {
      glEnable(GL_DEPTH_TEST);
    } else {
      glDisable(GL_DEPTH_TEST);
    }
    glutPostRedisplay();
    break;
  default:
    break;
  }
}
Ejemplo n.º 22
0
void
mouse(int b, int s, int x, int y)
{
  float selx, sely;

  mousex = x;
  mousey = y;
  curX = x;
  curY = y;
  if (s == GLUT_DOWN) {
    switch (b) {
    case GLUT_LEFT_BUTTON:
      if (solving) {
        freeSolutions();
        solving = 0;
      glutChangeToMenuEntry(1, "Solving", 1);
        glutSetWindowTitle("glpuzzle");
        movingPiece = 0;
      }
      left_mouse = GL_TRUE;
      sel_piece = selectPiece(mousex, mousey);
      if (computeCoords(sel_piece, mousex, mousey, &selx, &sely)) {
        grabPiece(sel_piece, selx, sely);
      }
      glutPostRedisplay();
      break;
    case GLUT_MIDDLE_BUTTON:
      middle_mouse = GL_TRUE;
      glutPostRedisplay();
      break;
    }
  } else {
    switch (b) {
    case GLUT_LEFT_BUTTON:
      left_mouse = GL_FALSE;
      dropSelection();
      glutPostRedisplay();
      break;
    case GLUT_MIDDLE_BUTTON:
      middle_mouse = GL_FALSE;
      glutPostRedisplay();
      break;
    }
  }
  motion(x, y);
}
Ejemplo n.º 23
0
void
animate(void)
{
  if (spinning) {
    add_quats(lastquat, curquat, curquat);
  }
  glutPostRedisplay();
  if (solving) {
    if (!continueSolving()) {
      solving = 0;
      glutChangeToMenuEntry(1, "Solving", 1);
      glutSetWindowTitle("glpuzzle");
    }
  }
  if (!solving && !spinning && !visible) {
    glutIdleFunc(NULL);
  }
}
Ejemplo n.º 24
0
void HandleLoadMenu(int cset)
{
  char filename[MAX_CSETNAMELEN + CSET_EXTLEN + 1];

  if (cset == -1) {
    MakeLoadAndSaveMenus();
    CurveMenuInit();
  } else {
    (void)strcpy(filename, CSetNames[cset]);
    (void)strcat(filename, CSET_EXT);
    if (ReadCSetFromFile(filename) == 0) {
      glutSetMenu(SaveMenu);
      glutChangeToMenuEntry(1, CSetNames[cset], cset);
      ComputeCSetAndMakeLists();
      SetWindowTitles(CSetNames[cset]);
      RedisplayBoth();
    }
  }
}
Ejemplo n.º 25
0
void ProcessMenu(int value)
{
    switch(value)
    {
    case 1:
        useBlending = !useBlending;
        if (useBlending)
        {
            glutChangeToMenuEntry(1, "Toggle vertex blending (currently ON)", 1);
        }
        else
        {
            glutChangeToMenuEntry(1, "Toggle vertex blending (currently OFF)", 1);
        }
        break;

    case 2:
        showBones = !showBones;
        if (showBones)
        {
            glutChangeToMenuEntry(2, "Show bones (currently ON)", 2);
        }
        else
        {
            glutChangeToMenuEntry(2, "Show bones (currently OFF)", 2);
        }
        break;

    case 3:
        useHighLevel = !useHighLevel;
        if (useHighLevel)
        {
            glutChangeToMenuEntry(3, "Switch to low-level vertex shader", 3);
            glUseProgramObjectARB(progObj[0]);
        }
        else
        {
            glutChangeToMenuEntry(3, "Switch to high-level vertex shader", 3);
            glUseProgramObjectARB(0);
        }
        break;

    default:
        break;
    }

    // Refresh the Window
    glutPostRedisplay();
}
Ejemplo n.º 26
0
static void		handleMenu(int value)
{
  switch (value) {
    default:
      break;

    case MENU_SHOW_GLOBE:
      mapMode = 0;
      initProjection();
      glutPostRedisplay();
      glutChangeToMenuEntry(2, "Show Globe *", MENU_SHOW_GLOBE);
      glutChangeToMenuEntry(3, "Show Map", MENU_SHOW_MAP);
      break;

    case MENU_SHOW_MAP:
      mapMode = 1;
      initProjection();
      glutPostRedisplay();
      glutChangeToMenuEntry(2, "Show Globe", MENU_SHOW_GLOBE);
      glutChangeToMenuEntry(3, "Show Map *", MENU_SHOW_MAP);
      break;

    case MENU_ADJUST_GLOBE:
      adjustMode = 0;
      glutChangeToMenuEntry(4, "Adjust Globe *", MENU_ADJUST_GLOBE);
      glutChangeToMenuEntry(5, "Adjust Day", MENU_ADJUST_DAY);
      glutChangeToMenuEntry(6, "Adjust Time", MENU_ADJUST_TIME);
      break;

    case MENU_ADJUST_DAY:
      adjustMode = 1;
      glutChangeToMenuEntry(4, "Adjust Globe", MENU_ADJUST_GLOBE);
      glutChangeToMenuEntry(5, "Adjust Day *", MENU_ADJUST_DAY);
      glutChangeToMenuEntry(6, "Adjust Time", MENU_ADJUST_TIME);
      break;

    case MENU_ADJUST_TIME:
      adjustMode = 2;
      glutChangeToMenuEntry(4, "Adjust Globe", MENU_ADJUST_GLOBE);
      glutChangeToMenuEntry(5, "Adjust Day", MENU_ADJUST_DAY);
      glutChangeToMenuEntry(6, "Adjust Time *", MENU_ADJUST_TIME);
      break;

    case MENU_QUIT:
      exit(0);
  }
}
Ejemplo n.º 27
0
/* ARGSUSED1 */
void
gokey(unsigned char key, int x, int y)
{
  char str[100];
  int mods;

  mods = glutGetModifiers();
  printf("key = %d, mods = 0x%x\n", key, mods);
  if (mods & GLUT_ACTIVE_ALT) {
    switch (key) {
    case '1':
      printf("Change to sub menu 1\n");
      glutChangeToSubMenu(1, "sub 1", submenu);
      break;
    case '2':
      printf("Change to sub menu 2\n");
      glutChangeToSubMenu(2, "sub 2", submenu);
      break;
    case '3':
      printf("Change to sub menu 3\n");
      glutChangeToSubMenu(3, "sub 3", submenu);
      break;
    case '4':
      printf("Change to sub menu 4\n");
      glutChangeToSubMenu(4, "sub 4", submenu);
      break;
    case '5':
      printf("Change to sub menu 5\n");
      glutChangeToSubMenu(5, "sub 5", submenu);
      break;
    }
  } else {
    switch (key) {
    case '1':
      printf("Change to menu entry 1\n");
      glutChangeToMenuEntry(1, "entry 1", 1);
      break;
    case '2':
      printf("Change to menu entry 2\n");
      glutChangeToMenuEntry(2, "entry 2", 2);
      break;
    case '3':
      printf("Change to menu entry 3\n");
      glutChangeToMenuEntry(3, "entry 3", 3);
      break;
    case '4':
      printf("Change to menu entry 4\n");
      glutChangeToMenuEntry(4, "entry 4", 4);
      break;
    case '5':
      printf("Change to menu entry 5\n");
      glutChangeToMenuEntry(5, "entry 5", 5);
      break;
    case 'a':
    case 'A':
      printf("Adding menu entry %d\n", item);
      sprintf(str, "added entry %d", item);
      glutAddMenuEntry(str, item);
      item++;
      break;
    case 's':
    case 'S':
      printf("Adding submenu %d\n", item);
      sprintf(str, "added submenu %d", item);
      glutAddSubMenu(str, submenu);
      item++;
      break;
    case 'q':
      printf("Remove 1\n");
      glutRemoveMenuItem(1);
      break;
    case 'w':
      printf("Remove 2\n");
      glutRemoveMenuItem(2);
      break;
    case 'e':
      printf("Remove 3\n");
      glutRemoveMenuItem(3);
      break;
    case 'r':
      printf("Remove 4\n");
      glutRemoveMenuItem(4);
      break;
    case 't':
      printf("Remove 5\n");
      glutRemoveMenuItem(5);
      break;
    }
  }
}
Ejemplo n.º 28
0
/*
 * Class:     gruenewa_opengl_GLUT__
 * Method:    glutChangeToMenuEntry
 * Signature: (ILjava/lang/String;I)V
 */
JNIEXPORT void JNICALL Java_gruenewa_opengl_GLUT_00024_glutChangeToMenuEntry
  (JNIEnv * jenv, jobject jobj, jint arg1, jobject arg2, jint arg3) {
   glutChangeToMenuEntry(arg1, (*jenv)->GetDirectBufferAddress(jenv, arg2), arg3); 
}
Ejemplo n.º 29
0
void ProcessMenu(int value)
{
    switch(value)
    {
    case 1:
        useBufferObject = !useBufferObject;
        RegenerateSphere();
        SetRenderingMethod();
        if (useBufferObject)
        {
            glutChangeToMenuEntry(1, "Toggle buffer object usage (currently ON)", 1);
        }
        else
        {
            glutChangeToMenuEntry(1, "Toggle buffer object usage (currently OFF)", 1);
        }
        break;

    case 2:
        mapBufferObject = !mapBufferObject;
        RegenerateSphere();
        SetRenderingMethod();
        if (mapBufferObject)
        {
            glutChangeToMenuEntry(2, "Toggle mapped buffer object (currently ON)", 2);
        }
        else
        {
            glutChangeToMenuEntry(2, "Toggle mapped buffer object (currently OFF)", 2);
        }
        break;

    case 3:
        animating = !animating;
        if (animating)
        {
            glutChangeToMenuEntry(3, "Toggle animation (currently ON)", 3);
            // Establish streaming buffer object
            // Data will be loaded with subsequent calls to glBufferSubData
            glBindBuffer(GL_ARRAY_BUFFER, bufferID);
            glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * 
                         numSphereVertices * 3, NULL, GL_STREAM_DRAW);
        } 
        else
        {
            glutChangeToMenuEntry(3, "Toggle animation (currently OFF)", 3);
            // Establish static buffer object
            // Data will be loaded with subsequent calls to glBufferSubData
            glBindBuffer(GL_ARRAY_BUFFER, bufferID);
            glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * 
                         numSphereVertices * 3, NULL, GL_STATIC_DRAW);
            RegenerateSphere();
            SetRenderingMethod();
        }
        break;

    default:
        break;
    }

    // Refresh the Window
    glutPostRedisplay();
}
Ejemplo n.º 30
0
void GLUTCALLBACK Key(unsigned char key,int x,int y)
{
   char buf[30];
   glutSetMenu(controlMID);
   switch(key) {
      case '1':
         axis=X_AXIS;
         break;
      case '2':
         axis=Y_AXIS;
         break;
      case '3':
         axis=Z_AXIS;
         break;
      case '<':
      case ',':
         angle-=ROTATE_DELTA;
         sprintf(buf,"Angle: %+.1f",angle);
         glutChangeToMenuEntry(3,buf,3);
         break;
      case '>':
      case '.':
         angle+=ROTATE_DELTA;
         sprintf(buf,"Angle: %+.1f",angle);
         glutChangeToMenuEntry(3,buf,3);
         break;
      case '+':
      case '=':
         if(eesrSpeed<0.9)
            eesrSpeed+=0.08;
         sprintf(buf,"Speed: %+.2f",eesrSpeed);
         glutChangeToMenuEntry(5,buf,5);
         break;
      case '_':
      case '-':
         if(eesrSpeed>-0.9)
            eesrSpeed-=0.08;
         sprintf(buf,"Speed: %+.2f",eesrSpeed);
         glutChangeToMenuEntry(5,buf,5);
         break;
      case 'T':
         eesrSetTime(eesrGetTime()-1.0);
         break;
      case 't':
         eesrSetTime(eesrGetTime()+1.0);
         break;
      case 'm':
         if(menusActive) {
            glutDetachMenu(GLUT_LEFT_BUTTON);
            glutDetachMenu(GLUT_RIGHT_BUTTON);
            menusActive=FALSE;
         } else {
            glutSetMenu(controlMID);
            glutAttachMenu(GLUT_LEFT_BUTTON);
            glutSetMenu(optionMID);
            glutAttachMenu(GLUT_RIGHT_BUTTON);
            menusActive=TRUE;
         }
         break;
      case 27: /* escape */
      case 'q':
      case 'Q':
	 exit(0);
   }
#ifdef HAVE_GLUTCAVE
   GLUTCAVE_REDISPLAY();
#else
   glutPostRedisplay();
#endif
}