aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/extras/Mesa_6.4.1/src/glut/beos/glutGet.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/extras/Mesa_6.4.1/src/glut/beos/glutGet.cpp')
-rw-r--r--nx-X11/extras/Mesa_6.4.1/src/glut/beos/glutGet.cpp211
1 files changed, 211 insertions, 0 deletions
diff --git a/nx-X11/extras/Mesa_6.4.1/src/glut/beos/glutGet.cpp b/nx-X11/extras/Mesa_6.4.1/src/glut/beos/glutGet.cpp
new file mode 100644
index 000000000..04a8479b9
--- /dev/null
+++ b/nx-X11/extras/Mesa_6.4.1/src/glut/beos/glutGet.cpp
@@ -0,0 +1,211 @@
+/***********************************************************
+ * Copyright (C) 1997, Be Inc. Copyright (C) 1999, Jake Hamby.
+ *
+ * This program is freely distributable without licensing fees
+ * and is provided without guarantee or warrantee expressed or
+ * implied. This program is -not- in the public domain.
+ *
+ *
+ * FILE: glutGet.cpp
+ *
+ * DESCRIPTION: get state information from GL
+ ***********************************************************/
+
+/***********************************************************
+ * Headers
+ ***********************************************************/
+#include <GL/glut.h>
+#include <string.h>
+#include <Autolock.h>
+#include <Screen.h>
+
+#include "glutint.h"
+#include "glutState.h"
+
+/***********************************************************
+ * Global variables
+ ***********************************************************/
+// rough guess, since we don't know how big the monitor really is
+const float dots_per_mm = (72/25.4); // dots per millimeter
+
+/***********************************************************
+ * FUNCTION: glutGet (9.1)
+ *
+ * DESCRIPTION: retrieve window and GL state
+ ***********************************************************/
+int glutGet(GLenum state) {
+ switch(state) {
+ case GLUT_WINDOW_X:
+ {BAutolock winlock(gState.currentWindow->Window()); // need to lock the window
+ if (gState.currentWindow->parent)
+ return (int)gState.currentWindow->Frame().left;
+ else
+ return (int)gState.currentWindow->Window()->Frame().left;
+ }
+ case GLUT_WINDOW_Y:
+ {BAutolock winlock(gState.currentWindow->Window());
+ if (gState.currentWindow->parent)
+ return (int)gState.currentWindow->Frame().top;
+ else
+ return (int)gState.currentWindow->Window()->Frame().top;
+ }
+ case GLUT_WINDOW_WIDTH:
+ {BAutolock winlock(gState.currentWindow->Window());
+ return gState.currentWindow->m_width;
+ }
+ case GLUT_WINDOW_HEIGHT:
+ {BAutolock winlock(gState.currentWindow->Window());
+ return gState.currentWindow->m_height;
+ }
+ case GLUT_WINDOW_PARENT:
+ {BAutolock winlock(gState.currentWindow->Window());
+ if(gState.currentWindow->parent)
+ return gState.currentWindow->parent->num + 1;
+ else
+ return 0;
+ }
+ case GLUT_WINDOW_NUM_CHILDREN:
+ {BAutolock winlock(gState.currentWindow->Window());
+ int num = 0;
+ GlutWindow *children = gState.currentWindow->children;
+ while (children) {
+ num++;
+ children = children->siblings;
+ }
+ return num;
+ }
+ case GLUT_WINDOW_BUFFER_SIZE: // best guesses
+ case GLUT_WINDOW_DEPTH_SIZE:
+ return 32;
+
+ case GLUT_WINDOW_STENCIL_SIZE:
+ case GLUT_WINDOW_RED_SIZE: // always 24-bit color
+ case GLUT_WINDOW_GREEN_SIZE:
+ case GLUT_WINDOW_BLUE_SIZE:
+ case GLUT_WINDOW_ALPHA_SIZE:
+ case GLUT_WINDOW_ACCUM_RED_SIZE:
+ case GLUT_WINDOW_ACCUM_GREEN_SIZE:
+ case GLUT_WINDOW_ACCUM_BLUE_SIZE:
+ case GLUT_WINDOW_ACCUM_ALPHA_SIZE:
+ return 8;
+
+ case GLUT_WINDOW_DOUBLEBUFFER: // always double-buffered RGBA
+ case GLUT_WINDOW_RGBA:
+ return 1;
+
+ case GLUT_WINDOW_COLORMAP_SIZE: // don't support these
+ case GLUT_WINDOW_NUM_SAMPLES:
+ case GLUT_WINDOW_STEREO:
+ return 0;
+
+ case GLUT_WINDOW_CURSOR:
+ return gState.currentWindow->cursor; // don't need to lock window since it won't change
+
+ case GLUT_SCREEN_WIDTH:
+ return (int)(BScreen().Frame().Width()) + 1;
+ case GLUT_SCREEN_HEIGHT:
+ return (int)(BScreen().Frame().Height()) + 1;
+ case GLUT_SCREEN_WIDTH_MM:
+ return (int)((BScreen().Frame().Width() + 1) / dots_per_mm);
+ case GLUT_SCREEN_HEIGHT_MM:
+ return (int)((BScreen().Frame().Height() + 1) / dots_per_mm);
+ case GLUT_MENU_NUM_ITEMS:
+ return gState.currentMenu->num;
+ case GLUT_DISPLAY_MODE_POSSIBLE:
+ return __glutConvertDisplayMode(0); // returns 1 if possible
+ case GLUT_INIT_DISPLAY_MODE:
+ return gState.displayMode;
+ case GLUT_INIT_WINDOW_X:
+ return gState.initX;
+ case GLUT_INIT_WINDOW_Y:
+ return gState.initY;
+ case GLUT_INIT_WINDOW_WIDTH:
+ return gState.initWidth;
+ case GLUT_INIT_WINDOW_HEIGHT:
+ return gState.initHeight;
+ case GLUT_ELAPSED_TIME:
+ bigtime_t elapsed, beginning, now;
+ __glutInitTime(&beginning);
+ now = system_time();
+ elapsed = now - beginning;
+ return (int) (elapsed / 1000); // 1000 ticks in a millisecond
+ default:
+ __glutWarning("invalid glutGet parameter: %d", state);
+ return -1;
+ }
+}
+
+/***********************************************************
+ * FUNCTION: glutLayerGet (9.2)
+ *
+ * DESCRIPTION: since we don't support layers, this is easy
+ ***********************************************************/
+int glutLayerGet(GLenum info) {
+ switch(info) {
+ case GLUT_OVERLAY_POSSIBLE:
+ case GLUT_HAS_OVERLAY:
+ return 0;
+ case GLUT_LAYER_IN_USE:
+ return GLUT_NORMAL;
+ case GLUT_TRANSPARENT_INDEX:
+ return -1;
+ case GLUT_NORMAL_DAMAGED:
+ return gState.currentWindow->displayEvent;
+ case GLUT_OVERLAY_DAMAGED:
+ return -1;
+ default:
+ __glutWarning("invalid glutLayerGet param: %d", info);
+ return -1;
+ }
+}
+
+/***********************************************************
+ * FUNCTION: glutDeviceGet (9.3)
+ *
+ * DESCRIPTION: get info about I/O devices we support
+ * easy, since BeOS only supports a keyboard and mouse now
+ ***********************************************************/
+int glutDeviceGet(GLenum info) {
+ switch(info) {
+ case GLUT_HAS_KEYBOARD:
+ case GLUT_HAS_MOUSE:
+ return 1;
+
+ case GLUT_HAS_SPACEBALL:
+ case GLUT_HAS_DIAL_AND_BUTTON_BOX:
+ case GLUT_HAS_TABLET:
+ case GLUT_NUM_SPACEBALL_BUTTONS:
+ case GLUT_NUM_BUTTON_BOX_BUTTONS:
+ case GLUT_NUM_DIALS:
+ case GLUT_NUM_TABLET_BUTTONS:
+ return 0;
+
+ case GLUT_NUM_MOUSE_BUTTONS:
+ {
+ int32 mouseButtons = 3; // good guess
+ if(get_mouse_type(&mouseButtons) != B_OK) {
+ __glutWarning("error getting number of mouse buttons");
+ }
+ return mouseButtons;
+ }
+
+ default:
+ __glutWarning("invalid glutDeviceGet parameter: %d", info);
+ return -1;
+ }
+}
+
+/***********************************************************
+ * FUNCTION: glutGetModifiers (9.4)
+ *
+ * DESCRIPTION: get the modifier key state for the current window
+ ***********************************************************/
+int glutGetModifiers() {
+ if(gState.modifierKeys == (int) ~0) {
+ __glutWarning(
+ "glutCurrentModifiers: do not call outside core input callback.");
+ return 0;
+ }
+ return gState.modifierKeys;
+}
+