Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

116 lines
4.0 KiB

  1. /*
  2. * (c) Copyright 1993, Silicon Graphics, Inc.
  3. * ALL RIGHTS RESERVED
  4. * Permission to use, copy, modify, and distribute this software for
  5. * any purpose and without fee is hereby granted, provided that the above
  6. * copyright notice appear in all copies and that both the copyright notice
  7. * and this permission notice appear in supporting documentation, and that
  8. * the name of Silicon Graphics, Inc. not be used in advertising
  9. * or publicity pertaining to distribution of the software without specific,
  10. * written prior permission.
  11. *
  12. * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
  13. * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
  14. * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
  15. * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
  16. * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
  17. * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
  18. * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
  19. * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
  20. * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN
  21. * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
  22. * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
  23. * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
  24. *
  25. * US Government Users Restricted Rights
  26. * Use, duplication, or disclosure by the Government is subject to
  27. * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
  28. * (c)(1)(ii) of the Rights in Technical Data and Computer Software
  29. * clause at DFARS 252.227-7013 and/or in similar or successor
  30. * clauses in the FAR or the DOD or NASA FAR Supplement.
  31. * Unpublished-- rights reserved under the copyright laws of the
  32. * United States. Contractor/manufacturer is Silicon Graphics,
  33. * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311.
  34. *
  35. * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
  36. */
  37. #ifndef SCENE_H
  38. #define SCENE_H
  39. #pragma warning(disable:4305)
  40. #include "point.hxx"
  41. /* Index of refraction stuff */
  42. const GLfloat min_index = .1;
  43. const GLfloat max_index = 2.5;
  44. const int nindices = 6;
  45. const struct {
  46. const char *name;
  47. GLfloat index;
  48. } indices[] = {
  49. {"Air", 1.0},
  50. {"Ice", 1.31},
  51. {"Water", 1.33},
  52. {"Zinc Crown Glass", 1.517},
  53. {"Light Flint Glass", 1.650},
  54. {"Heavy Flint Glass", 1.890}
  55. };
  56. const int def_refraction_index = 4;
  57. typedef struct {
  58. GLfloat diffuse[4];
  59. Point pos;
  60. GLboolean shadow_mask[4];
  61. GLfloat matrix[16];
  62. char name[64];
  63. int on;
  64. } light;
  65. const int nlights = 3;
  66. //extern light lights[];
  67. /* scene_load_texture uses no OpenGL calls and so can be called before
  68. * mapping the window */
  69. int scene_load_texture(char *texfile);
  70. //const char def_texfile[] = DATADIR "floor.rgb";
  71. const char def_texfile[] = "floor.rgb";
  72. extern int possible_divisions[];
  73. const int npossible_divisions = 4;
  74. const int def_divisions_index = 1;
  75. extern GLfloat aspect;
  76. extern int draw_square, draw_shadows, draw_refraction, draw_sphere,
  77. draw_lights, draw_texture;
  78. /* These are names used for picking */
  79. const int name_background = 0;
  80. const int name_square = 1;
  81. const int name_sphere = 2;
  82. const int name_lights = 3;
  83. void scene_init();
  84. void scene_draw();
  85. int scene_pick(GLdouble x, GLdouble y);
  86. /* This returns all the lights to their default postions */
  87. void scene_reset_lights();
  88. void lights_onoff(int light, int val);
  89. void refraction_change(GLfloat refraction);
  90. void divisions_change(int divisions);
  91. /* name is one of the names defined above.
  92. * phi, theta are in radians and are the amount of motion requested
  93. * returns whether or not it did anything.
  94. * If update is zero, the shadows and refractions will not be recomputed */
  95. int scene_move(int name, float dr, float dphi, float dtheta, int update);
  96. /* This function is a companion to scene_move().
  97. * It recomputes the shadows and refractions - dr, dphi, and dtheta
  98. * should indicate whether or not the respective values were changed
  99. * since the stuff was last computed. */
  100. void scene_move_update(int name, int dr, int dphi, int dtheta);
  101. #endif