aboutsummaryrefslogtreecommitdiff
path: root/tests/glfw/glfwsample.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/glfw/glfwsample.c')
-rw-r--r--tests/glfw/glfwsample.c392
1 files changed, 0 insertions, 392 deletions
diff --git a/tests/glfw/glfwsample.c b/tests/glfw/glfwsample.c
deleted file mode 100644
index 79b504b6..00000000
--- a/tests/glfw/glfwsample.c
+++ /dev/null
@@ -1,392 +0,0 @@
-#include <stdlib.h>
-#include <GL/glfw.h>
-#include <stdio.h>
-
-#ifdef EMSCRIPTEN
-#include <emscripten/emscripten.h>
-#endif
-
-void Init(void);
-void Shut_Down(int return_code);
-int Iteration(void);
-void Draw_Square(float red, float green, float blue);
-void Draw(void);
-void OnKeyPressed( int key, int action );
-void OnCharPressed( int character, int action );
-char* GetKeyName(int key);
-char* GetParamName(int param);
-int OnClose();
-void OnResize( int width, int height );
-void OnRefresh();
-void OnMouseClick( int button, int action );
-void OnMouseMove( int x, int y );
-void OnMouseWheel( int pos );
-void PullInfo();
-void Iteration_void();
-
-int params[] = {GLFW_OPENED, GLFW_ACTIVE, GLFW_ICONIFIED, GLFW_ACCELERATED, GLFW_RED_BITS, GLFW_GREEN_BITS, GLFW_BLUE_BITS, GLFW_ALPHA_BITS, GLFW_DEPTH_BITS, GLFW_STENCIL_BITS, GLFW_REFRESH_RATE, GLFW_ACCUM_RED_BITS, GLFW_ACCUM_GREEN_BITS, GLFW_ACCUM_BLUE_BITS, GLFW_ACCUM_ALPHA_BITS, GLFW_AUX_BUFFERS, GLFW_STEREO, GLFW_WINDOW_NO_RESIZE, GLFW_FSAA_SAMPLES, GLFW_OPENGL_VERSION_MAJOR, GLFW_OPENGL_VERSION_MINOR, GLFW_OPENGL_FORWARD_COMPAT, GLFW_OPENGL_DEBUG_CONTEXT, GLFW_OPENGL_PROFILE};
-unsigned int nb_params = sizeof(params) / sizeof(int);
-
-int features[] = {GLFW_MOUSE_CURSOR, GLFW_STICKY_KEYS, GLFW_STICKY_MOUSE_BUTTONS, GLFW_SYSTEM_KEYS, GLFW_KEY_REPEAT, GLFW_AUTO_POLL_EVENTS};
-unsigned int nb_features = sizeof(features) / sizeof(int);
-
-float rotate_y = 0,
- rotate_z = 0;
-const float rotations_per_tick = .2;
-// the time of the previous frame
-double old_time;
-
-int main(void)
-{
- Init();
- old_time = glfwGetTime();
-#ifdef EMSCRIPTEN
- emscripten_set_main_loop (Iteration_void, 0, 1);
-#else
- while(Iteration());
-#endif
- Shut_Down(0);
-}
-
-void Init()
-{
- const int window_width = 800,
- window_height = 600;
-
- if (glfwInit() != GL_TRUE)
- Shut_Down(1);
- // 800 x 600, 16 bit color, no depth, alpha or stencil buffers, windowed
- if (glfwOpenWindow(window_width, window_height, 5, 6, 5,
- 0, 0, 0, GLFW_WINDOW) != GL_TRUE)
- Shut_Down(1);
- glfwSetWindowTitle("The GLFW Window");
-
- glfwSetKeyCallback( OnKeyPressed );
- glfwSetCharCallback( OnCharPressed );
- glfwSetWindowCloseCallback(OnClose);
- glfwSetWindowSizeCallback(OnResize);
- glfwSetWindowRefreshCallback(OnRefresh);
- glfwSetMouseWheelCallback(OnMouseWheel);
- glfwSetMousePosCallback(OnMouseMove);
- glfwSetMouseButtonCallback(OnMouseClick);
-
- // set the projection matrix to a normal frustum with a max depth of 50
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- float aspect_ratio = ((float)window_height) / window_width;
- glFrustum(.5, -.5, -.5 * aspect_ratio, .5 * aspect_ratio, 1, 50);
- glMatrixMode(GL_MODELVIEW);
-
- PullInfo();
-}
-
-void Shut_Down(int return_code)
-{
- glfwTerminate();
- exit(return_code);
-}
-
-int Iteration()
-{
- // calculate time elapsed, and the amount by which stuff rotates
- double current_time = glfwGetTime(),
- delta_rotate = (current_time - old_time) * rotations_per_tick * 360;
- old_time = current_time;
- // escape to quit, arrow keys to rotate view
- if (glfwGetKey(GLFW_KEY_ESC) == GLFW_PRESS) return 0;
- if (glfwGetKey(GLFW_KEY_LEFT) == GLFW_PRESS)
- rotate_y += delta_rotate;
- if (glfwGetKey(GLFW_KEY_RIGHT) == GLFW_PRESS)
- rotate_y -= delta_rotate;
- // z axis always rotates
- rotate_z += delta_rotate;
-
- // clear the buffer
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- // draw the figure
- Draw();
- // swap back and front buffers
- glfwSwapBuffers();
- return 1;
-}
-
-void Iteration_void(){
- Iteration();
-}
-
-void Draw_Square(float red, float green, float blue)
-{
-#ifndef EMSCRIPTEN
- // Draws a square with a gradient color at coordinates 0, 10
- glBegin(GL_QUADS);
- {
- glColor3f(red, green, blue);
- glVertex2i(1, 11);
- glColor3f(red * .8, green * .8, blue * .8);
- glVertex2i(-1, 11);
- glColor3f(red * .5, green * .5, blue * .5);
- glVertex2i(-1, 9);
- glColor3f(red * .8, green * .8, blue * .8);
- glVertex2i(1, 9);
- }
- glEnd();
-#endif
-}
-
-void Draw(void)
-{
- // reset view matrix
- glLoadIdentity();
- // move view back a bit
- glTranslatef(0, 0, -30);
- // apply the current rotation
- glRotatef(rotate_y, 0, 1, 0);
- glRotatef(rotate_z, 0, 0, 1);
- // by repeatedly rotating the view matrix during drawing, the
- // squares end up in a circle
- int i = 0, squares = 15;
- float red = 0, blue = 1;
- for (; i < squares; ++i){
- glRotatef(360.0/squares, 0, 0, 1);
- // colors change for each square
- red += 1.0/12;
- blue -= 1.0/12;
- Draw_Square(red, .6, blue);
- }
-}
-
-void OnCharPressed( int character, int action ){
- if(action == GLFW_PRESS)
- printf("'%c' (%i) char is pressed\n", character, character);
- if(action == GLFW_RELEASE)
- printf("'%c' (%i) char is released\n", character, character);
-}
-
-char* GetKeyName(int key){
- switch(key){
- case GLFW_KEY_UNKNOWN: return "unknown";
- case GLFW_KEY_SPACE: return "space";
- case GLFW_KEY_SPECIAL: return "special";
- case GLFW_KEY_ESC: return "escape";
- case GLFW_KEY_F1 : return "F1";
- case GLFW_KEY_F2 : return "F2";
- case GLFW_KEY_F3 : return "F3";
- case GLFW_KEY_F4 : return "F4";
- case GLFW_KEY_F5 : return "F5";
- case GLFW_KEY_F6 : return "F6";
- case GLFW_KEY_F7 : return "F7";
- case GLFW_KEY_F8 : return "F8";
- case GLFW_KEY_F9 : return "F9";
- case GLFW_KEY_F10: return "F10";
- case GLFW_KEY_F11: return "F11";
- case GLFW_KEY_F12: return "F12";
- case GLFW_KEY_F13: return "F13";
- case GLFW_KEY_F14: return "F14";
- case GLFW_KEY_F15: return "F15";
- case GLFW_KEY_F16: return "F16";
- case GLFW_KEY_F17: return "F17";
- case GLFW_KEY_F18: return "F18";
- case GLFW_KEY_F19: return "F19";
- case GLFW_KEY_F20: return "F20";
- case GLFW_KEY_F21: return "F21";
- case GLFW_KEY_F22: return "F22";
- case GLFW_KEY_F23: return "F23";
- case GLFW_KEY_F24: return "F24";
- case GLFW_KEY_F25: return "F25";
- case GLFW_KEY_UP : return "up";
- case GLFW_KEY_DOWN: return "down";
- case GLFW_KEY_LEFT: return "left";
- case GLFW_KEY_RIGHT: return "right";
- case GLFW_KEY_LSHIFT: return "left shift";
- case GLFW_KEY_RSHIFT: return "right shift";
- case GLFW_KEY_LCTRL: return "left ctrl";
- case GLFW_KEY_RCTRL: return "right ctrl";
- case GLFW_KEY_LALT: return "left alt";
- case GLFW_KEY_RALT: return "right alt";
- case GLFW_KEY_TAB: return "tab";
- case GLFW_KEY_ENTER: return "enter";
- case GLFW_KEY_BACKSPACE: return "backspace";
- case GLFW_KEY_INSERT: return "insertr";
- case GLFW_KEY_DEL: return "del";
- case GLFW_KEY_PAGEUP: return "page up";
- case GLFW_KEY_PAGEDOWN: return "page down";
- case GLFW_KEY_HOME: return "home";
- case GLFW_KEY_END: return "end";
- case GLFW_KEY_KP_0: return "0";
- case GLFW_KEY_KP_1: return "1";
- case GLFW_KEY_KP_2: return "2";
- case GLFW_KEY_KP_3: return "3";
- case GLFW_KEY_KP_4: return "4";
- case GLFW_KEY_KP_5: return "5";
- case GLFW_KEY_KP_6: return "6";
- case GLFW_KEY_KP_7: return "7";
- case GLFW_KEY_KP_8: return "8";
- case GLFW_KEY_KP_9: return "9";
- case GLFW_KEY_KP_DIVIDE: return "/";
- case GLFW_KEY_KP_MULTIPLY: return "*";
- case GLFW_KEY_KP_SUBTRACT: return "-";
- case GLFW_KEY_KP_ADD: return "+";
- case GLFW_KEY_KP_DECIMAL: return ".";
- case GLFW_KEY_KP_EQUAL: return "=";
- case GLFW_KEY_KP_ENTER: return "enter";
- case GLFW_KEY_KP_NUM_LOCK: return "num lock";
- case GLFW_KEY_CAPS_LOCK: return "caps lock";
- case GLFW_KEY_SCROLL_LOCK: return "scroll lock";
- case GLFW_KEY_PAUSE: return "pause";
- case GLFW_KEY_LSUPER: return "left super";
- case GLFW_KEY_RSUPER: return "right super";
- case GLFW_KEY_MENU: return "menu";
- }
- char* chr = malloc(2*sizeof(char));
- chr[0] = key;
- chr[1] = '\0';
- return chr;
-}
-
-char* GetParamName(int param){
- switch(param){
- case GLFW_WINDOW : return "GLFW_WINDOW";
- case GLFW_FULLSCREEN : return "GLFW_FULLSCREEN";
- case GLFW_OPENED : return "GLFW_OPENED";
- case GLFW_ACTIVE : return "GLFW_ACTIVE";
- case GLFW_ICONIFIED : return "GLFW_ICONIFIED";
- case GLFW_ACCELERATED : return "GLFW_ACCELERATED";
- case GLFW_RED_BITS : return "GLFW_RED_BITS";
- case GLFW_GREEN_BITS : return "GLFW_GREEN_BITS";
- case GLFW_BLUE_BITS : return "GLFW_BLUE_BITS";
- case GLFW_ALPHA_BITS : return "GLFW_ALPHA_BITS";
- case GLFW_DEPTH_BITS : return "GLFW_DEPTH_BITS";
- case GLFW_STENCIL_BITS : return "GLFW_STENCIL_BITS";
- case GLFW_REFRESH_RATE : return "GLFW_REFRESH_RATE";
- case GLFW_ACCUM_RED_BITS : return "GLFW_ACCUM_RED_BITS";
- case GLFW_ACCUM_GREEN_BITS : return "GLFW_ACCUM_GREEN_BITS";
- case GLFW_ACCUM_BLUE_BITS : return "GLFW_BLUE_BITS";
- case GLFW_ACCUM_ALPHA_BITS : return "GLFW_ALPHA_BITS";
- case GLFW_AUX_BUFFERS : return "GLFW_AUX_BUFFERS";
- case GLFW_STEREO : return "GLFW_STEREO";
- case GLFW_WINDOW_NO_RESIZE : return "GLFW_WINDOW_NO_RESIZE";
- case GLFW_FSAA_SAMPLES : return "GLFW_FSAA_SAMPLES";
- case GLFW_OPENGL_VERSION_MAJOR : return "GLFW_OPENGL_VERSION_MAJOR";
- case GLFW_OPENGL_VERSION_MINOR : return "GLFW_OPENGL_VERSION_MINOR";
- case GLFW_OPENGL_FORWARD_COMPAT : return "GLFW_OPENGL_FORWARD_COMPAT";
- case GLFW_OPENGL_DEBUG_CONTEXT : return "GLFW_OPENGL_DEBUG_CONTEXT";
- case GLFW_OPENGL_PROFILE : return "GLFW_OPENGL_PROFILE";
- case GLFW_OPENGL_CORE_PROFILE : return "GLFW_OPENGL_CORE_PROFILE | GLFW_PRESENT";
- case GLFW_OPENGL_COMPAT_PROFILE : return "GLFW_OPENGL_COMPAT_PROFILE | GLFW_AXES";
- case GLFW_MOUSE_CURSOR : return "GLFW_MOUSE_CURSOR";
- case GLFW_STICKY_KEYS : return "GLFW_STICKY_KEYS";
- case GLFW_STICKY_MOUSE_BUTTONS : return "GLFW_STICKY_MOUSE_BUTTONS";
- case GLFW_SYSTEM_KEYS : return "GLFW_SYSTEM_KEYS";
- case GLFW_KEY_REPEAT : return "GLFW_KEY_REPEAT";
- case GLFW_AUTO_POLL_EVENTS : return "GLFW_AUTO_POLL_EVENTS";
- case GLFW_WAIT : return "GLFW_WAIT";
- case GLFW_NOWAIT : return "GLFW_NOWAIT";
- case GLFW_BUTTONS : return "GLFW_BUTTONS";
- case GLFW_NO_RESCALE_BIT : return "GLFW_NO_RESCALE_BIT";
- case GLFW_ORIGIN_UL_BIT : return "GLFW_ORIGIN_UL_BIT";
- case GLFW_BUILD_MIPMAPS_BIT : return "GLFW_BUILD_MIPMAPS_BIT";
- case GLFW_ALPHA_MAP_BIT : return "GLFW_ALPHA_MAP_BIT";
- default : return "Invalid param";
- }
-}
-
-void OnKeyPressed( int key, int action ){
- const char* key_name = GetKeyName(key);
- if(key_name == 0)
- return;
- if(action == GLFW_PRESS)
- printf("'%s' (%i) key is pressed\n", key_name, key);
- if(action == GLFW_RELEASE)
- printf("'%s' (%i) key is released\n", key_name, key);
- if(action == GLFW_RELEASE && key == GLFW_KEY_ENTER)
- PullInfo();
-}
-
-int OnClose(){
- printf("Closed\n");
- return 0;
-}
-
-void OnRefresh(){
- printf("Refresh\n");
-}
-
-void OnResize( int width, int height ){
- printf("Resizing to %i %i\n", width, height);
-}
-
-void OnMouseClick( int button, int action ){
- if(action == GLFW_PRESS)
- printf("Mouse button %i has been pressed\n", button);
- if(action == GLFW_RELEASE)
- printf("Mouse button %i has been released\n", button);
-}
-
-void OnMouseMove( int x, int y ){
- int lState = glfwGetMouseButton(GLFW_MOUSE_BUTTON_LEFT);
-
- if (lState == GLFW_PRESS)
- printf("Dragged %i to %i %i\n", GLFW_MOUSE_BUTTON_LEFT, x, y);
- if(lState == GLFW_RELEASE)
- printf("Moved %i to %i %i\n", GLFW_MOUSE_BUTTON_LEFT, x, y);
-}
-
-void OnMouseWheel( int pos ){
- printf("Mouse wheel has been moved to %i\n", pos);
-}
-
-void PullInfo(){
- printf("================================================================================\n");
-
- int major, minor, rev;
- glfwGetVersion(&major, &minor, &rev);
- printf("GLFW version is %i.%i.%i\n", major, minor, rev);
-
- int width, height;
- glfwGetWindowSize(&width, &height);
- printf("Window size is %i %i\n", width, height);
-
- int status = glfwGetKey(GLFW_KEY_LCTRL);
- if(status == GLFW_PRESS)
- printf("Left control is pressed\n");
- else
- printf("Left control is released\n");
-
- status = glfwGetMouseButton(GLFW_MOUSE_BUTTON_1);
- if(status == GLFW_PRESS)
- printf("Mouse button 1 is pressed\n");
- else
- printf("Mouse button 1 is released\n");
-
- int x, y;
- glfwGetMousePos(&x, &y);
- printf("Mouse position is %i %i\n", x, y);
-
- int wheel = glfwGetMouseWheel();
- printf("Mouse wheel pos is %i\n", wheel);
-
- double time = glfwGetTime();
- printf("Time is %f\n", time);
-
- glfwGetGLVersion(&major, &minor, &rev);
- printf("GL version is %i.%i.%i\n", major, minor, rev);
-
- int proc = glfwGetNumberOfProcessors();
- printf("%i processors are available\n", proc);
-
- unsigned int i;
- for(i = 0; i<nb_params; i++)
- printf(" - %-27s : %i\n", GetParamName(params[i]), glfwGetWindowParam(params[i]));
-
- const char* extension = "MOZ_WEBGL_compressed_texture_s3tc";
- printf("'%s' extension is %s.\n", extension, glfwExtensionSupported(extension) ? "supported" : "not supported");
-
- extension = "GL_EXT_framebuffer_object";
- printf("'%s' extension is %s.\n", extension, glfwExtensionSupported(extension) ? "supported" : "not supported");
-
- printf("Sleeping 1 sec...\n");
- glfwSleep(1);
- printf("...Done.\n");
-
- printf("================================================================================\n");
-}