/* * Mesa 3-D graphics library * Version: 6.5 * Copyright (C) 1995-2006 Brian Paul * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* * Library for glut using mesa fbdev driver * * Written by Sean D'Epagnier (c) 2006 */ #include <sys/time.h> #include <linux/fb.h> #include <GL/glfbdev.h> #define MULTIHEAD /* enable multihead hacks, it allows the program to continue drawing without reading input when a second fbdev has keyboard focus it can cause screen corruption that requires C-l to fix */ #define HAVE_GPM #define MAX_VSYNC 200 /* this causes these symbols to not be exported */ #pragma GCC visibility push(hidden) /* --------- fbdev ------------ */ extern int Redisplay; extern int Visible; extern int VisibleSwitch; extern int Active; extern int VisiblePoll; extern int Swapping, VTSwitch; void TestVisible(void); int ParseFBModes(int, int, int, int, int, int); void SetVideoMode(void); void CreateBuffer(void); void CreateVisual(void); extern int FrameBufferFD; extern unsigned char *FrameBuffer; extern unsigned char *BackBuffer; extern int DisplayMode; extern char exiterror[256]; extern struct fb_fix_screeninfo FixedInfo; extern struct fb_var_screeninfo VarInfo; extern GLFBDevContextPtr Context; extern GLFBDevBufferPtr Buffer; extern GLFBDevVisualPtr Visual; /* --- colormap --- */ #define REVERSECMAPSIZELOG 3 #define REVERSECMAPSIZE (1<<REVERSECMAPSIZELOG) extern unsigned short RedColorMap[256], GreenColorMap[256], BlueColorMap[256]; extern unsigned char ReverseColorMap[REVERSECMAPSIZE] [REVERSECMAPSIZE] [REVERSECMAPSIZE]; void LoadColorMap(void); void RestoreColorMap(void); /* --- mouse --- */ extern int MouseX, MouseY; extern int CurrentCursor; extern int MouseVisible; extern int LastMouseTime; extern int NumMouseButtons; void InitializeCursor(void); void EraseCursor(void); void DrawCursor(void); void SwapCursor(void); /* --- menus --- */ struct GlutMenu { int NumItems; int x, y; int width; int selected; struct { int value; int submenu; char *name; } *Items; void (*func)(int); }; extern struct GlutMenu *Menus; extern int ActiveMenu; extern int CurrentMenu; void InitializeMenus(void); void FreeMenus(void); void DrawMenus(void); int TryMenu(int, int); void OpenMenu(void); void CloseMenu(void); /* --- state --- */ extern int AccumSize, DepthSize, StencilSize, NumSamples; extern struct timeval StartTime; extern int KeyboardModifiers; /* --- input --- */ #ifdef HAVE_GPM extern int GpmMouse; #endif extern int CurrentVT; extern int ConsoleFD; extern double MouseSpeed; extern int KeyRepeatMode; void InitializeVT(int); void RestoreVT(void); void CloseMouse(void); void InitializeMouse(void); void ReceiveInput(void); /* --- callback --- */ extern void (*DisplayFunc)(void); extern void (*ReshapeFunc)(int width, int height); extern void (*KeyboardFunc)(unsigned char key, int x, int y); extern void (*KeyboardUpFunc)(unsigned char key, int x, int y); extern void (*MouseFunc)(int key, int state, int x, int y); extern void (*MotionFunc)(int x, int y); extern void (*PassiveMotionFunc)(int x, int y); extern void (*VisibilityFunc)(int state); extern void (*SpecialFunc)(int key, int x, int y); extern void (*SpecialUpFunc)(int key, int x, int y); extern void (*IdleFunc)(void); extern void (*MenuStatusFunc)(int state, int x, int y); extern void (*MenuStateFunc)(int state); /* --- timers --- */ struct GlutTimer { int time; void (*func)(int); int value; struct GlutTimer *next; }; extern struct GlutTimer *GlutTimers; /* ------- Game Mode -------- */ extern int GameMode; #pragma GCC visibility pop