132001f49Smrg/* 232001f49Smrg * Copyright (C) 2010 LunarG Inc. 332001f49Smrg * 432001f49Smrg * Permission is hereby granted, free of charge, to any person obtaining a 532001f49Smrg * copy of this software and associated documentation files (the "Software"), 632001f49Smrg * to deal in the Software without restriction, including without limitation 732001f49Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense, 832001f49Smrg * and/or sell copies of the Software, and to permit persons to whom the 932001f49Smrg * Software is furnished to do so, subject to the following conditions: 1032001f49Smrg * 1132001f49Smrg * The above copyright notice and this permission notice shall be included 1232001f49Smrg * in all copies or substantial portions of the Software. 1332001f49Smrg * 1432001f49Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1532001f49Smrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1632001f49Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 1732001f49Smrg * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1832001f49Smrg * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 1932001f49Smrg * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 2032001f49Smrg * DEALINGS IN THE SOFTWARE. 2132001f49Smrg * 2232001f49Smrg * Authors: 2332001f49Smrg * Chia-I Wu <olv@lunarg.com> 2432001f49Smrg */ 2532001f49Smrg 2632001f49Smrg#ifndef _EGLUTINT_H_ 2732001f49Smrg#define _EGLUTINT_H_ 2832001f49Smrg 2932001f49Smrg#include "EGL/egl.h" 3032001f49Smrg#include "eglut.h" 3132001f49Smrg 3232001f49Smrgstruct eglut_window { 3332001f49Smrg EGLConfig config; 3432001f49Smrg EGLContext context; 3532001f49Smrg 3632001f49Smrg /* initialized by native display */ 3732001f49Smrg struct { 3832001f49Smrg union { 3932001f49Smrg EGLNativeWindowType window; 4032001f49Smrg EGLNativePixmapType pixmap; 4132001f49Smrg EGLSurface surface; /* pbuffer or screen surface */ 4232001f49Smrg } u; 4332001f49Smrg int width, height; 4432001f49Smrg } native; 4532001f49Smrg 4632001f49Smrg EGLSurface surface; 4732001f49Smrg 4832001f49Smrg int index; 4932001f49Smrg 5032001f49Smrg EGLUTreshapeCB reshape_cb; 5132001f49Smrg EGLUTdisplayCB display_cb; 5232001f49Smrg EGLUTkeyboardCB keyboard_cb; 5332001f49Smrg EGLUTspecialCB special_cb; 5432001f49Smrg}; 5532001f49Smrg 5632001f49Smrgstruct eglut_state { 5732001f49Smrg int api_mask; 5832001f49Smrg int window_width, window_height; 5932001f49Smrg const char *display_name; 6032001f49Smrg int verbose; 6132001f49Smrg int init_time; 6232001f49Smrg 6332001f49Smrg EGLUTidleCB idle_cb; 6432001f49Smrg 6532001f49Smrg int num_windows; 6632001f49Smrg 6732001f49Smrg /* initialized by native display */ 6832001f49Smrg EGLNativeDisplayType native_dpy; 6932001f49Smrg EGLint surface_type; 7032001f49Smrg 7132001f49Smrg EGLDisplay dpy; 7232001f49Smrg EGLint major, minor; 7332001f49Smrg 7432001f49Smrg struct eglut_window *current; 7532001f49Smrg 7632001f49Smrg int redisplay; 7732001f49Smrg}; 7832001f49Smrg 7932001f49Smrgextern struct eglut_state *_eglut; 8032001f49Smrg 8132001f49Smrgvoid 8232001f49Smrg_eglutFatal(char *format, ...); 8332001f49Smrg 8432001f49Smrgint 8532001f49Smrg_eglutNow(void); 8632001f49Smrg 8732001f49Smrgvoid 8832001f49Smrg_eglutNativeInitDisplay(void); 8932001f49Smrg 9032001f49Smrgvoid 9132001f49Smrg_eglutNativeFiniDisplay(void); 9232001f49Smrg 9332001f49Smrgvoid 9432001f49Smrg_eglutNativeInitWindow(struct eglut_window *win, const char *title, 9532001f49Smrg int x, int y, int w, int h); 9632001f49Smrg 9732001f49Smrgvoid 9832001f49Smrg_eglutNativeFiniWindow(struct eglut_window *win); 9932001f49Smrg 10032001f49Smrgvoid 10132001f49Smrg_eglutNativeEventLoop(void); 10232001f49Smrg 10332001f49Smrg#endif /* _EGLUTINT_H_ */ 104