├── README.TXT ├── build ├── codeblocks.unix │ ├── DEMOGL.cbp │ ├── DEMOGL.layout │ ├── OpenGL.workspace │ └── log.txt ├── codelite.unix │ ├── DEMOGL.mk │ ├── DEMOGL.project │ └── OpenGL.workspace └── gmake.unix │ ├── DEMOGL.make │ └── Makefile └── src ├── anttweakbar ├── AntPerfTimer.h ├── AntTweakBar.h ├── AntTweakBar.rc ├── AntTweakBar.sln ├── AntTweakBar.vcproj ├── LoadOGL.cpp ├── LoadOGL.h ├── LoadOGLCore.cpp ├── LoadOGLCore.h ├── MiniGLUT.h ├── TwBar.cpp ├── TwBar.h ├── TwColors.cpp ├── TwColors.h ├── TwEventGLUT.c ├── TwEventWin.c ├── TwEventX11.c ├── TwFonts.cpp ├── TwFonts.h ├── TwGraph.h ├── TwMgr.cpp ├── TwMgr.h ├── TwOpenGL.cpp ├── TwOpenGL.h ├── TwOpenGLCore.cpp ├── TwOpenGLCore.h ├── TwPrecomp.cpp ├── TwPrecomp.h ├── res │ ├── FontChars.txt │ ├── FontFixed1.pgm │ ├── FontLargeAA.pgm │ ├── FontNormal.pgm │ ├── FontNormalAA.pgm │ ├── FontSmall.pgm │ ├── TwXCursors.h │ ├── cur00000.cur │ ├── cur00001.cur │ ├── cur00002.cur │ ├── cur00003.cur │ ├── cur00004.cur │ ├── cur00005.cur │ ├── cur00006.cur │ ├── cur00007.cur │ ├── cur00008.cur │ ├── cur00009.cur │ ├── cur00010.cur │ ├── cur00011.cur │ ├── cur00012.cur │ ├── cur00013.cur │ ├── curs00.pbm │ ├── curs01.pbm │ ├── curs02.pbm │ ├── curs03.pbm │ ├── curs04.pbm │ ├── curs05.pbm │ ├── curs06.pbm │ ├── curs07.pbm │ ├── curs08.pbm │ ├── curs09.pbm │ ├── curs10.pbm │ ├── curs11.pbm │ ├── curs12.pbm │ ├── curs13.pbm │ ├── mask00.pbm │ ├── mask01.pbm │ ├── mask02.pbm │ ├── mask03.pbm │ ├── mask04.pbm │ ├── mask05.pbm │ ├── mask06.pbm │ ├── mask07.pbm │ ├── mask08.pbm │ ├── mask09.pbm │ ├── mask10.pbm │ ├── mask11.pbm │ ├── mask12.pbm │ └── mask13.pbm └── resource.h ├── callbacks.cpp ├── callbacks.hpp ├── debug.cpp ├── debug.hpp ├── freeglut ├── GL │ ├── Makefile.am │ ├── Makefile.in │ ├── freeglut.h │ ├── freeglut_ext.h │ ├── freeglut_std.h │ └── glut.h ├── freeglut_callbacks.c ├── freeglut_cursor.c ├── freeglut_display.c ├── freeglut_ext.c ├── freeglut_font.c ├── freeglut_font_data.c ├── freeglut_gamemode.c ├── freeglut_geometry.c ├── freeglut_glutfont_definitions.c ├── freeglut_init.c ├── freeglut_input_devices.c ├── freeglut_internal.h ├── freeglut_joystick.c ├── freeglut_main.c ├── freeglut_menu.c ├── freeglut_misc.c ├── freeglut_overlay.c ├── freeglut_spaceball.c ├── freeglut_state.c ├── freeglut_stroke_mono_roman.c ├── freeglut_stroke_roman.c ├── freeglut_structure.c ├── freeglut_teapot.c ├── freeglut_teapot_data.h ├── freeglut_videoresize.c ├── freeglut_window.c ├── freeglut_xinput.c └── templates │ ├── cpp_template │ └── header_template ├── gl3w ├── GL3 │ ├── gl3.h │ └── gl3w.h └── gl3w.c ├── glu.cpp ├── glu.hpp ├── main.cpp ├── math ├── Affine.cpp ├── Algebra.hpp ├── Matrix2x2.cpp ├── Matrix3x3.cpp ├── Matrix4x4.cpp ├── Projection.cpp ├── Transform.hpp ├── Vector2.cpp ├── Vector3.cpp └── Vector4.cpp ├── scripts ├── premake4.lua └── release.lua └── shaders ├── cornell.glsl └── ssgi.glsl /README.TXT: -------------------------------------------------------------------------------- 1 | OpenGL demonstration project 2 | ---------------------------------------- 3 | 4 | Work in progress 5 | 6 | Ubuntu dependencies 7 | - libxi-dev libx11-dev 8 | -------------------------------------------------------------------------------- /build/codeblocks.unix/DEMOGL.cbp: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 179 | 180 | 181 | -------------------------------------------------------------------------------- /build/codeblocks.unix/DEMOGL.layout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /build/codeblocks.unix/OpenGL.workspace: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /build/codeblocks.unix/log.txt: -------------------------------------------------------------------------------- 1 | Feb 4 2013:17:25:41 2 | >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 3 | > Creating dummy window... 4 | > Platform information: 5 | > GL_VENDOR NVIDIA Corporation 6 | > GL_RENDERER Quadro 6000/PCIe/SSE2 7 | > GL_VERSION 4.3.0 NVIDIA 313.09 8 | > GL_SHADING_LANGUAGE_VERSION 4.30 NVIDIA via Cg compiler 9 | > Creating requested window... 10 | > Initializing resources... 11 | > GL_ARB_debug_output enabled. 12 | > Loading program file "cornell.glsl"... 13 | > Loading program file "ssgi.glsl"... 14 | > Running... 15 | > GL_ARB_debug_output: 16 | Program/shader state performance warning: Fragment Shader is going to be recompiled because the shader key based on GL state mismatches.. 17 | > Loading program file "cornell.glsl"... 18 | > Loading program file "ssgi.glsl"... 19 | > GL_ARB_debug_output: 20 | Program/shader state performance warning: Fragment Shader is going to be recompiled because the shader key based on GL state mismatches.. 21 | > Loading program file "cornell.glsl"... 22 | > Loading program file "ssgi.glsl"... 23 | > GL_ARB_debug_output: 24 | Program/shader state performance warning: Fragment Shader is going to be recompiled because the shader key based on GL state mismatches.. 25 | > GL_ARB_debug_output: 26 | Buffer performance warning: Buffer object 1 (bound to GL_UNIFORM_BUFFER (0), and GL_UNIFORM_BUFFER_EXT, usage hint is GL_STATIC_DRAW) is being copied/moved from VIDEO memory to SYSTEM HEAP memory.. 27 | > Cleaning up... 28 | -------------------------------------------------------------------------------- /build/codelite.unix/DEMOGL.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | None 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | None 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | -------------------------------------------------------------------------------- /build/codelite.unix/OpenGL.workspace: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /build/gmake.unix/Makefile: -------------------------------------------------------------------------------- 1 | # GNU Make solution makefile autogenerated by Premake 2 | # Type "make help" for usage help 3 | 4 | ifndef config 5 | config=debug 6 | endif 7 | export config 8 | 9 | PROJECTS := DEMOGL 10 | 11 | .PHONY: all clean help $(PROJECTS) 12 | 13 | all: $(PROJECTS) 14 | 15 | DEMOGL: 16 | @echo "==== Building DEMOGL ($(config)) ====" 17 | @${MAKE} --no-print-directory -C . -f DEMOGL.make 18 | 19 | clean: 20 | @${MAKE} --no-print-directory -C . -f DEMOGL.make clean 21 | 22 | help: 23 | @echo "Usage: make [config=name] [target]" 24 | @echo "" 25 | @echo "CONFIGURATIONS:" 26 | @echo " debug" 27 | @echo " release" 28 | @echo "" 29 | @echo "TARGETS:" 30 | @echo " all (default)" 31 | @echo " clean" 32 | @echo " DEMOGL" 33 | @echo "" 34 | @echo "For more information, see http://industriousone.com/premake/quick-start" 35 | -------------------------------------------------------------------------------- /src/anttweakbar/AntPerfTimer.h: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------- 2 | // 3 | // @file AntPerfTimer.h 4 | // @brief A performance (precision) timer for benchs 5 | // @author Philippe Decaudin - http://www.antisphere.com 6 | // @license This file is part of the AntTweakBar library. 7 | // For conditions of distribution and use, see License.txt 8 | // 9 | // note: No cpp file is needed, everything is defined in this header 10 | // 11 | // --------------------------------------------------------------------------- 12 | 13 | #if !defined ANT_PERF_TIMER_INCLUDED 14 | #define ANT_PERF_TIMER_INCLUDED 15 | 16 | #ifndef __cplusplus 17 | # error This is a C++ header 18 | #endif // __cplusplus 19 | 20 | 21 | #if defined(WIN32) || defined(WIN64) || defined(_WIN32) || defined(_WIN64) 22 | 23 | #include 24 | #include 25 | 26 | struct PerfTimer 27 | { 28 | inline PerfTimer() { if( !QueryPerformanceFrequency(&Freq) ) MessageBox(NULL, _T("Precision timer not supported"), _T("Problem"), MB_ICONEXCLAMATION); Reset(); } 29 | inline void Reset() { QueryPerformanceCounter(&Start); } 30 | inline double GetTime() { if( QueryPerformanceCounter(&End) ) return ((double)End.QuadPart - (double)Start.QuadPart)/((double)Freq.QuadPart); else return 0; } 31 | protected: 32 | LARGE_INTEGER Start, End, Freq; 33 | }; 34 | 35 | #else // !_WIN (-> LINUX) 36 | 37 | #include 38 | #include 39 | 40 | struct PerfTimer 41 | { 42 | inline PerfTimer() { Reset(); } 43 | inline void Reset() { gettimeofday(&Start, &TZ); } 44 | inline double GetTime() { gettimeofday(&End,&TZ); 45 | double t1 = (double)Start.tv_sec + (double)Start.tv_usec/(1000*1000); 46 | double t2 = (double)End.tv_sec + (double)End.tv_usec/(1000*1000); 47 | return t2-t1; } 48 | protected: 49 | struct timeval Start, End; 50 | struct timezone TZ; 51 | }; 52 | 53 | #endif // _WIN 54 | 55 | 56 | #endif // ANT_PERF_TIMER_INCLUDED 57 | -------------------------------------------------------------------------------- /src/anttweakbar/AntTweakBar.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdupuy/ssgi/1e44048af63779d49bd250b73386841edbfc98ea/src/anttweakbar/AntTweakBar.rc -------------------------------------------------------------------------------- /src/anttweakbar/AntTweakBar.sln: -------------------------------------------------------------------------------- 1 | Microsoft Visual Studio Solution File, Format Version 10.00 2 | # Visual C++ Express 2008 3 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AntTweakBar", "AntTweakBar.vcproj", "{B99E1FA1-C30A-45F2-9D57-9E9C21B2DF42}" 4 | EndProject 5 | Global 6 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 7 | Debug|Win32 = Debug|Win32 8 | Debug|x64 = Debug|x64 9 | Release|Win32 = Release|Win32 10 | Release|x64 = Release|x64 11 | EndGlobalSection 12 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 13 | {B99E1FA1-C30A-45F2-9D57-9E9C21B2DF42}.Debug|Win32.ActiveCfg = Debug|Win32 14 | {B99E1FA1-C30A-45F2-9D57-9E9C21B2DF42}.Debug|Win32.Build.0 = Debug|Win32 15 | {B99E1FA1-C30A-45F2-9D57-9E9C21B2DF42}.Debug|x64.ActiveCfg = Debug|x64 16 | {B99E1FA1-C30A-45F2-9D57-9E9C21B2DF42}.Debug|x64.Build.0 = Debug|x64 17 | {B99E1FA1-C30A-45F2-9D57-9E9C21B2DF42}.Release|Win32.ActiveCfg = Release|Win32 18 | {B99E1FA1-C30A-45F2-9D57-9E9C21B2DF42}.Release|Win32.Build.0 = Release|Win32 19 | {B99E1FA1-C30A-45F2-9D57-9E9C21B2DF42}.Release|x64.ActiveCfg = Release|x64 20 | {B99E1FA1-C30A-45F2-9D57-9E9C21B2DF42}.Release|x64.Build.0 = Release|x64 21 | EndGlobalSection 22 | GlobalSection(SolutionProperties) = preSolution 23 | HideSolutionNode = FALSE 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /src/anttweakbar/MiniGLUT.h: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------- 2 | // 3 | // @file MiniGLUT.h 4 | // @brief A subset of GLUT definitions needed to compile helper functions 5 | // implemented in TwEventGLUT.c 6 | // 7 | // notes: - Private header 8 | // - AntTweakBar.dll does not need to link with GLUT, 9 | // it just needs some definitions for its helper functions. 10 | // - This header is provided to avoid the need of having GLUT 11 | // installed to recompile AntTweakBar. 12 | // - Do not use this header in your own programs, better use the 13 | // GLUT.h header from the actual GLUT library SDK : 14 | // http://opengl.org/resources/libraries/glut 15 | // 16 | // --------------------------------------------------------------------------- 17 | 18 | #if !defined MINI_GLUT_INCLUDED 19 | #define MINI_GLUT_INCLUDED 20 | 21 | #if defined(_WIN32) || defined(_WIN64) 22 | # define WIN32_LEAN_AND_MEAN 23 | # include // needed by gl.h 24 | # define GLUT_CALL __stdcall 25 | # define GLUT_CALLBACK __cdecl 26 | # define GLUT_API __declspec(dllimport) 27 | #else 28 | # define GLUT_CALL 29 | # define GLUT_CALLBACK 30 | # define GLUT_API extern 31 | #endif 32 | 33 | #if defined(_MACOSX) 34 | # include 35 | # include 36 | #else 37 | # include // must be included after windows.h 38 | # include 39 | #endif 40 | 41 | #ifdef __cplusplus 42 | extern "C" { 43 | #endif 44 | 45 | 46 | // Mouse buttons 47 | #define GLUT_LEFT_BUTTON 0 48 | #define GLUT_MIDDLE_BUTTON 1 49 | #define GLUT_RIGHT_BUTTON 2 50 | 51 | // Mouse button state 52 | #define GLUT_DOWN 0 53 | #define GLUT_UP 1 54 | 55 | // glutGetModifiers return mask 56 | #define GLUT_ACTIVE_SHIFT 1 57 | #define GLUT_ACTIVE_CTRL 2 58 | #define GLUT_ACTIVE_ALT 4 59 | 60 | // function keys 61 | #define GLUT_KEY_F1 1 62 | #define GLUT_KEY_F2 2 63 | #define GLUT_KEY_F3 3 64 | #define GLUT_KEY_F4 4 65 | #define GLUT_KEY_F5 5 66 | #define GLUT_KEY_F6 6 67 | #define GLUT_KEY_F7 7 68 | #define GLUT_KEY_F8 8 69 | #define GLUT_KEY_F9 9 70 | #define GLUT_KEY_F10 10 71 | #define GLUT_KEY_F11 11 72 | #define GLUT_KEY_F12 12 73 | 74 | // directional keys 75 | #define GLUT_KEY_LEFT 100 76 | #define GLUT_KEY_UP 101 77 | #define GLUT_KEY_RIGHT 102 78 | #define GLUT_KEY_DOWN 103 79 | #define GLUT_KEY_PAGE_UP 104 80 | #define GLUT_KEY_PAGE_DOWN 105 81 | #define GLUT_KEY_HOME 106 82 | #define GLUT_KEY_END 107 83 | #define GLUT_KEY_INSERT 108 84 | 85 | // display mode bit masks 86 | #define GLUT_RGB 0 87 | #define GLUT_RGBA GLUT_RGB 88 | #define GLUT_INDEX 1 89 | #define GLUT_SINGLE 0 90 | #define GLUT_DOUBLE 2 91 | #define GLUT_ACCUM 4 92 | #define GLUT_ALPHA 8 93 | #define GLUT_DEPTH 16 94 | #define GLUT_STENCIL 32 95 | 96 | // timer 97 | #define GLUT_ELAPSED_TIME ((GLenum) 700) 98 | 99 | 100 | // functions subset 101 | GLUT_API void GLUT_CALL glutInit(int *argcp, char **argv); 102 | GLUT_API void GLUT_CALL glutInitDisplayMode(unsigned int mode); 103 | GLUT_API int GLUT_CALL glutCreateWindow(const char *title); 104 | GLUT_API int GLUT_CALL glutGetWindow(void); 105 | GLUT_API void GLUT_CALL glutSetWindow(int win); 106 | GLUT_API int GLUT_CALL glutCreateSubWindow(int win, int x, int y, int width, int height); 107 | GLUT_API int GLUT_CALL glutGet(GLenum type); 108 | GLUT_API void GLUT_CALL glutSwapBuffers(); 109 | GLUT_API void GLUT_CALL glutPostRedisplay(); 110 | GLUT_API void GLUT_CALL glutInitWindowPosition(int x, int y); 111 | GLUT_API void GLUT_CALL glutInitWindowSize(int width, int height); 112 | GLUT_API void GLUT_CALL glutPositionWindow(int x, int y); 113 | GLUT_API void GLUT_CALL glutReshapeWindow(int width, int height); 114 | GLUT_API void GLUT_CALL glutMainLoop(); 115 | GLUT_API int GLUT_CALL glutCreateMenu(void (GLUT_CALLBACK *func)(int)); 116 | GLUT_API void GLUT_CALL glutDisplayFunc(void (GLUT_CALLBACK *func)(void)); 117 | GLUT_API void GLUT_CALL glutReshapeFunc(void (GLUT_CALLBACK *func)(int width, int height)); 118 | GLUT_API void GLUT_CALL glutKeyboardFunc(void (GLUT_CALLBACK *func)(unsigned char key, int x, int y)); 119 | GLUT_API void GLUT_CALL glutMouseFunc(void (GLUT_CALLBACK *func)(int button, int state, int x, int y)); 120 | GLUT_API void GLUT_CALL glutMotionFunc(void (GLUT_CALLBACK *func)(int x, int y)); 121 | GLUT_API void GLUT_CALL glutPassiveMotionFunc(void (GLUT_CALLBACK *func)(int x, int y)); 122 | GLUT_API void GLUT_CALL glutSpecialFunc(void (GLUT_CALLBACK *func)(int key, int x, int y)); 123 | GLUT_API int GLUT_CALL glutGetModifiers(void); 124 | GLUT_API void GLUT_CALL glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings); 125 | GLUT_API void GLUT_CALL glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks); 126 | GLUT_API void GLUT_CALL glutSolidTeapot(GLdouble size); 127 | 128 | // GLUT exit problem workaround (see glut.h) 129 | #if (defined(_WIN32) || defined(_WIN64)) && !defined(GLUT_DISABLE_ATEXIT_HACK) 130 | extern void __cdecl exit(int); 131 | GLUT_API void GLUT_CALL __glutInitWithExit(int *argcp, char **argv, void (__cdecl *exitfunc)(int)); 132 | static void GLUT_CALL glutInit_ATEXIT_HACK(int *argcp, char **argv) { __glutInitWithExit(argcp, argv, exit); } 133 | #define glutInit glutInit_ATEXIT_HACK 134 | #endif 135 | 136 | 137 | #ifdef __cplusplus 138 | } 139 | #endif 140 | 141 | #endif // !defined MINI_GLUT_INCLUDED 142 | 143 | -------------------------------------------------------------------------------- /src/anttweakbar/TwColors.cpp: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------- 2 | // 3 | // @file TwColors.cpp 4 | // @author Philippe Decaudin - http://www.antisphere.com 5 | // @license This file is part of the AntTweakBar library. 6 | // For conditions of distribution and use, see License.txt 7 | // 8 | // --------------------------------------------------------------------------- 9 | 10 | 11 | #include "TwPrecomp.h" 12 | #include "TwColors.h" 13 | 14 | 15 | void ColorRGBToHLSf(float _R, float _G, float _B, float *_Hue, float *_Light, float *_Saturation) 16 | { 17 | // Compute HLS from RGB. The r,g,b triplet is between [0,1], 18 | // hue is between [0,360], light and saturation are [0,1]. 19 | 20 | float rnorm, gnorm, bnorm, minval, maxval, msum, mdiff, r, g, b; 21 | r = g = b = 0; 22 | if(_R>0) r = _R; if(r>1) r = 1; 23 | if(_G>0) g = _G; if(g>1) g = 1; 24 | if(_B>0) b = _B; if(b>1) b = 1; 25 | 26 | minval = r; 27 | if(gmaxval) maxval = g; 31 | if(b>maxval) maxval = b; 32 | 33 | rnorm = gnorm = bnorm = 0; 34 | mdiff = maxval - minval; 35 | msum = maxval + minval; 36 | float l = 0.5f * msum; 37 | if(_Light) 38 | *_Light = l; 39 | if(maxval!=minval) 40 | { 41 | rnorm = (maxval - r)/mdiff; 42 | gnorm = (maxval - g)/mdiff; 43 | bnorm = (maxval - b)/mdiff; 44 | } 45 | else 46 | { 47 | if(_Saturation) 48 | *_Saturation = 0; 49 | if(_Hue) 50 | *_Hue = 0; 51 | return; 52 | } 53 | 54 | if(_Saturation) 55 | { 56 | if(l<0.5f) 57 | *_Saturation = mdiff/msum; 58 | else 59 | *_Saturation = mdiff/(2.0f - msum); 60 | } 61 | 62 | if(_Hue) 63 | { 64 | if(r==maxval) 65 | *_Hue = 60.0f * (6.0f + bnorm - gnorm); 66 | else if(g==maxval) 67 | *_Hue = 60.0f * (2.0f + rnorm - bnorm); 68 | else 69 | *_Hue = 60.0f * (4.0f + gnorm - rnorm); 70 | 71 | if(*_Hue>360.0f) 72 | *_Hue -= 360.0f; 73 | } 74 | } 75 | 76 | 77 | void ColorRGBToHLSi(int _R, int _G, int _B, int *_Hue, int *_Light, int *_Saturation) 78 | { 79 | float h, l, s; 80 | ColorRGBToHLSf((1.0f/255.0f)*float(_R), (1.0f/255.0f)*float(_G), (1.0f/255.0f)*float(_B), &h, &l, &s); 81 | if(_Hue) *_Hue = (int)TClamp(h*(256.0f/360.0f), 0.0f, 255.0f); 82 | if(_Light) *_Light = (int)TClamp(l*256.0f, 0.0f, 255.0f); 83 | if(_Saturation) *_Saturation= (int)TClamp(s*256.0f, 0.0f, 255.0f); 84 | } 85 | 86 | 87 | void ColorHLSToRGBf(float _Hue, float _Light, float _Saturation, float *_R, float *_G, float *_B) 88 | { 89 | // Compute RGB from HLS. The light and saturation are between [0,1] 90 | // and hue is between [0,360]. The returned r,g,b triplet is between [0,1]. 91 | 92 | // a local auxiliary function 93 | struct CLocal 94 | { 95 | static float HLSToRGB(float _Rn1, float _Rn2, float _Huei) 96 | { 97 | float hue = _Huei; 98 | if(hue>360) hue = hue - 360; 99 | if(hue<0) hue = hue + 360; 100 | if(hue<60 ) return _Rn1 + (_Rn2-_Rn1)*hue/60; 101 | if(hue<180) return _Rn2; 102 | if(hue<240) return _Rn1 + (_Rn2-_Rn1)*(240-hue)/60; 103 | return _Rn1; 104 | } 105 | }; 106 | 107 | float rh, rl, rs, rm1, rm2; 108 | rh = rl = rs = 0; 109 | if(_Hue>0) rh = _Hue; if(rh>360) rh = 360; 110 | if(_Light>0) rl = _Light; if(rl>1) rl = 1; 111 | if(_Saturation>0) rs = _Saturation; if(rs>1) rs = 1; 112 | 113 | if(rl<=0.5f) 114 | rm2 = rl*(1.0f + rs); 115 | else 116 | rm2 = rl + rs - rl*rs; 117 | rm1 = 2.0f*rl - rm2; 118 | 119 | if(!rs) 120 | { 121 | if(_R) *_R = rl; 122 | if(_G) *_G = rl; 123 | if(_B) *_B = rl; 124 | } 125 | else 126 | { 127 | if(_R) *_R = CLocal::HLSToRGB(rm1, rm2, rh+120); 128 | if(_G) *_G = CLocal::HLSToRGB(rm1, rm2, rh); 129 | if(_B) *_B = CLocal::HLSToRGB(rm1, rm2, rh-120); 130 | } 131 | } 132 | 133 | 134 | void ColorHLSToRGBi(int _Hue, int _Light, int _Saturation, int *_R, int *_G, int *_B) 135 | { 136 | float r, g, b; 137 | ColorHLSToRGBf((360.0f/255.0f)*float(_Hue), (1.0f/255.0f)*float(_Light), (1.0f/255.0f)*float(_Saturation), &r, &g, &b); 138 | if(_R) *_R = (int)TClamp(r*256.0f, 0.0f, 255.0f); 139 | if(_G) *_G = (int)TClamp(g*256.0f, 0.0f, 255.0f); 140 | if(_B) *_B = (int)TClamp(b*256.0f, 0.0f, 255.0f); 141 | } 142 | 143 | 144 | color32 ColorBlend(color32 _Color1, color32 _Color2, float _S) 145 | { 146 | float a1, r1, g1, b1, a2, r2, g2, b2; 147 | Color32ToARGBf(_Color1, &a1, &r1, &g1, &b1); 148 | Color32ToARGBf(_Color2, &a2, &r2, &g2, &b2); 149 | float t = 1.0f-_S; 150 | return Color32FromARGBf(t*a1+_S*a2, t*r1+_S*r2, t*g1+_S*g2, t*b1+_S*b2); 151 | } 152 | 153 | 154 | -------------------------------------------------------------------------------- /src/anttweakbar/TwColors.h: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------- 2 | // 3 | // @file TwColors.h 4 | // @brief Color conversions 5 | // @author Philippe Decaudin - http://www.antisphere.com 6 | // @license This file is part of the AntTweakBar library. 7 | // For conditions of distribution and use, see License.txt 8 | // 9 | // note: Private header 10 | // 11 | // --------------------------------------------------------------------------- 12 | 13 | 14 | #if !defined ANT_TW_COLORS_INCLUDED 15 | #define ANT_TW_COLORS_INCLUDED 16 | 17 | 18 | // --------------------------------------------------------------------------- 19 | 20 | 21 | typedef unsigned int color32; 22 | 23 | 24 | const color32 COLOR32_BLACK = 0xff000000; // Black 25 | const color32 COLOR32_WHITE = 0xffffffff; // White 26 | const color32 COLOR32_ZERO = 0x00000000; // Zero 27 | const color32 COLOR32_RED = 0xffff0000; // Red 28 | const color32 COLOR32_GREEN = 0xff00ff00; // Green 29 | const color32 COLOR32_BLUE = 0xff0000ff; // Blue 30 | 31 | 32 | template inline const _T& TClamp(const _T& _X, const _T& _Limit1, const _T& _Limit2) 33 | { 34 | if( _Limit1<_Limit2 ) 35 | return (_X<=_Limit1) ? _Limit1 : ( (_X>=_Limit2) ? _Limit2 : _X ); 36 | else 37 | return (_X<=_Limit2) ? _Limit2 : ( (_X>=_Limit1) ? _Limit1 : _X ); 38 | } 39 | 40 | inline color32 Color32FromARGBi(int _A, int _R, int _G, int _B) 41 | { 42 | return (((color32)TClamp(_A, 0, 255))<<24) | (((color32)TClamp(_R, 0, 255))<<16) | (((color32)TClamp(_G, 0, 255))<<8) | ((color32)TClamp(_B, 0, 255)); 43 | } 44 | 45 | inline color32 Color32FromARGBf(float _A, float _R, float _G, float _B) 46 | { 47 | return (((color32)TClamp(_A*256.0f, 0.0f, 255.0f))<<24) | (((color32)TClamp(_R*256.0f, 0.0f, 255.0f))<<16) | (((color32)TClamp(_G*256.0f, 0.0f, 255.0f))<<8) | ((color32)TClamp(_B*256.0f, 0.0f, 255.0f)); 48 | } 49 | 50 | inline void Color32ToARGBi(color32 _Color, int *_A, int *_R, int *_G, int *_B) 51 | { 52 | if(_A) *_A = (_Color>>24)&0xff; 53 | if(_R) *_R = (_Color>>16)&0xff; 54 | if(_G) *_G = (_Color>>8)&0xff; 55 | if(_B) *_B = _Color&0xff; 56 | } 57 | 58 | inline void Color32ToARGBf(color32 _Color, float *_A, float *_R, float *_G, float *_B) 59 | { 60 | if(_A) *_A = (1.0f/255.0f)*float((_Color>>24)&0xff); 61 | if(_R) *_R = (1.0f/255.0f)*float((_Color>>16)&0xff); 62 | if(_G) *_G = (1.0f/255.0f)*float((_Color>>8)&0xff); 63 | if(_B) *_B = (1.0f/255.0f)*float(_Color&0xff); 64 | } 65 | 66 | void ColorRGBToHLSf(float _R, float _G, float _B, float *_Hue, float *_Light, float *_Saturation); 67 | 68 | void ColorRGBToHLSi(int _R, int _G, int _B, int *_Hue, int *_Light, int *_Saturation); 69 | 70 | void ColorHLSToRGBf(float _Hue, float _Light, float _Saturation, float *_R, float *_G, float *_B); 71 | 72 | void ColorHLSToRGBi(int _Hue, int _Light, int _Saturation, int *_R, int *_G, int *_B); 73 | 74 | color32 ColorBlend(color32 _Color1, color32 _Color2, float _S); 75 | 76 | 77 | // --------------------------------------------------------------------------- 78 | 79 | 80 | #endif // !defined ANT_TW_COLORS_INCLUDED 81 | -------------------------------------------------------------------------------- /src/anttweakbar/TwEventGLUT.c: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------- 2 | // 3 | // @file TwEventGLUT.c 4 | // @brief Helper: 5 | // translate and re-send mouse and keyboard events 6 | // from GLUT event callbacks to AntTweakBar 7 | // 8 | // @author Philippe Decaudin - http://www.antisphere.com 9 | // @date 2006/05/10 10 | // @license This file is part of the AntTweakBar library. 11 | // For conditions of distribution and use, see License.txt 12 | // 13 | // --------------------------------------------------------------------------- 14 | 15 | 16 | #define GLUT_NO_LIB_PRAGMA // we do not want to force linkage with glut 17 | #ifdef _MSC_VER 18 | # pragma warning(disable: 4505) // glut generates 'unreferenced function' warnings 19 | # pragma warning(disable: 4100) // unreferenced parameter 20 | #endif // _MSC_VER 21 | 22 | // #include 23 | #include "MiniGLUT.h" // a subset of glut.h needed to compile TwEventGLUT.c 24 | // note: AntTweakBar.dll does not need to link with GLUT, 25 | // it just needs some definitions for its helper functions. 26 | 27 | #include 28 | 29 | 30 | int TW_GLUT_CALL TwEventMouseButtonGLUT(int glutButton, int glutState, int mouseX, int mouseY) 31 | { 32 | TwMouseAction action = (glutState==GLUT_DOWN) ? TW_MOUSE_PRESSED : TW_MOUSE_RELEASED; 33 | 34 | TwMouseMotion(mouseX, mouseY); 35 | switch( glutButton ) 36 | { 37 | case GLUT_LEFT_BUTTON: 38 | return TwMouseButton(action, TW_MOUSE_LEFT); 39 | case GLUT_RIGHT_BUTTON: 40 | return TwMouseButton(action, TW_MOUSE_RIGHT); 41 | case GLUT_MIDDLE_BUTTON: 42 | return TwMouseButton(action, TW_MOUSE_MIDDLE); 43 | default: 44 | return 0; 45 | } 46 | } 47 | 48 | int TW_GLUT_CALL TwEventMouseMotionGLUT(int mouseX, int mouseY) 49 | { 50 | return TwMouseMotion(mouseX, mouseY); 51 | } 52 | 53 | 54 | // GLUT does not send modifiers state to 'Key' and 'Special' callbacks, 55 | // and we cannot call glutGetModifiers here because we do not want to link 56 | // AntTweakBar with glut, so the following function is used to store 57 | // a pointer to the glutGetModifiers function of the calling application. 58 | // It must be called at initialisation of the application. 59 | 60 | int (TW_CALL *g_GLUTGetModifiers)(void) = NULL; 61 | 62 | int TW_CALL TwGLUTModifiersFunc(int (TW_CALL *glutGetModifiersFunc)(void)) 63 | { 64 | g_GLUTGetModifiers = glutGetModifiersFunc; 65 | return (g_GLUTGetModifiers==NULL) ? 0 : 1; 66 | } 67 | 68 | 69 | int TW_GLUT_CALL TwEventKeyboardGLUT(unsigned char glutKey, int mouseX, int mouseY) 70 | { 71 | int kmod = 0; 72 | 73 | if( g_GLUTGetModifiers!=NULL ) 74 | { 75 | int glutMod = g_GLUTGetModifiers(); 76 | 77 | if( glutMod&GLUT_ACTIVE_SHIFT ) 78 | kmod |= TW_KMOD_SHIFT; 79 | if( glutMod&GLUT_ACTIVE_CTRL ) 80 | kmod |= TW_KMOD_CTRL; 81 | if( glutMod&GLUT_ACTIVE_ALT ) 82 | kmod |= TW_KMOD_ALT; 83 | } 84 | 85 | if( (kmod&TW_KMOD_CTRL) && (glutKey>0 && glutKey<27) ) // CTRL special case 86 | glutKey += 'a'-1; 87 | 88 | return TwKeyPressed((int)glutKey, kmod); 89 | } 90 | 91 | 92 | int TW_GLUT_CALL TwEventSpecialGLUT(int glutKey, int mouseX, int mouseY) 93 | { 94 | int k = 0, kmod = 0; 95 | 96 | if( g_GLUTGetModifiers!=NULL ) 97 | { 98 | int glutMod = g_GLUTGetModifiers(); 99 | 100 | if( glutMod&GLUT_ACTIVE_SHIFT ) 101 | kmod |= TW_KMOD_SHIFT; 102 | if( glutMod&GLUT_ACTIVE_CTRL ) 103 | kmod |= TW_KMOD_CTRL; 104 | if( glutMod&GLUT_ACTIVE_ALT ) 105 | kmod |= TW_KMOD_ALT; 106 | } 107 | 108 | if( glutKey>=GLUT_KEY_F1 && glutKey<=GLUT_KEY_F12 ) 109 | k = TW_KEY_F1 + (glutKey-GLUT_KEY_F1); 110 | else 111 | { 112 | switch( glutKey ) 113 | { 114 | case GLUT_KEY_LEFT: 115 | k = TW_KEY_LEFT; 116 | break; 117 | case GLUT_KEY_UP: 118 | k = TW_KEY_UP; 119 | break; 120 | case GLUT_KEY_RIGHT: 121 | k = TW_KEY_RIGHT; 122 | break; 123 | case GLUT_KEY_DOWN: 124 | k = TW_KEY_DOWN; 125 | break; 126 | case GLUT_KEY_PAGE_UP: 127 | k = TW_KEY_PAGE_UP; 128 | break; 129 | case GLUT_KEY_PAGE_DOWN: 130 | k = TW_KEY_PAGE_DOWN; 131 | break; 132 | case GLUT_KEY_HOME: 133 | k = TW_KEY_HOME; 134 | break; 135 | case GLUT_KEY_END: 136 | k = TW_KEY_END; 137 | break; 138 | case GLUT_KEY_INSERT: 139 | k = TW_KEY_INSERT; 140 | break; 141 | } 142 | } 143 | 144 | if( k>0 && k 15 | #include 16 | #include 17 | #include 18 | 19 | static int s_KMod = 0; 20 | const int buff_sz = 80; 21 | 22 | // ---------------------------------------------------------------------- 23 | // ---------------------------------------------------------------------- 24 | static int _XKeyRelease(XEvent *event) 25 | { 26 | KeySym keysym; 27 | char buffer[buff_sz]; 28 | 29 | XLookupString((XKeyEvent *)event, buffer, buff_sz, &keysym, 0); 30 | 31 | switch (keysym) 32 | { 33 | case XK_Control_L: 34 | case XK_Control_R: s_KMod &= ~TW_KMOD_CTRL; break; 35 | 36 | case XK_Shift_L: 37 | case XK_Shift_R: s_KMod &= ~TW_KMOD_SHIFT; break; 38 | 39 | case XK_Alt_L: 40 | case XK_Alt_R: s_KMod &= ~TW_KMOD_ALT; break; 41 | } 42 | return 0; 43 | } 44 | 45 | // ---------------------------------------------------------------------- 46 | // ---------------------------------------------------------------------- 47 | static int _XKeyPress(XEvent *event) 48 | { 49 | int modifiers = 0; // modifiers sent to AntTweakBar 50 | int k = 0; // key sent to AntTweakBar 51 | KeySym keysym; 52 | char buffer[buff_sz]; 53 | 54 | int num_char = XLookupString((XKeyEvent *)event, buffer, buff_sz, &keysym, 0); 55 | 56 | if (event->xkey.state & ControlMask) 57 | modifiers |= TW_KMOD_CTRL; 58 | if (event->xkey.state & ShiftMask) 59 | modifiers |= TW_KMOD_SHIFT; 60 | if (event->xkey.state & Mod1Mask) 61 | modifiers |= TW_KMOD_ALT; 62 | 63 | switch (keysym) 64 | { 65 | case XK_Control_L: 66 | case XK_Control_R: s_KMod |= TW_KMOD_CTRL; break; 67 | 68 | case XK_Shift_L: 69 | case XK_Shift_R: s_KMod |= TW_KMOD_SHIFT; break; 70 | 71 | case XK_Alt_L: 72 | case XK_Alt_R: s_KMod |= TW_KMOD_ALT; break; 73 | 74 | case XK_Escape: k = TW_KEY_ESCAPE; break; 75 | case XK_Help: k = TW_KEY_F1; break; 76 | case XK_F1: k = TW_KEY_F1; break; 77 | case XK_F2: k = TW_KEY_F2; break; 78 | case XK_F3: k = TW_KEY_F3; break; 79 | case XK_F4: k = TW_KEY_F4; break; 80 | case XK_F5: k = TW_KEY_F5; break; 81 | case XK_F6: k = TW_KEY_F6; break; 82 | case XK_F7: k = TW_KEY_F7; break; 83 | case XK_F8: k = TW_KEY_F8; break; 84 | case XK_F9: k = TW_KEY_F9; break; 85 | case XK_F10: k = TW_KEY_F10; break; 86 | case XK_F11: k = TW_KEY_F11; break; 87 | case XK_F12: k = TW_KEY_F12; break; 88 | case XK_Up: k = TW_KEY_UP; break; 89 | case XK_Down: k = TW_KEY_DOWN; break; 90 | case XK_Right: k = TW_KEY_RIGHT; break; 91 | case XK_Left: k = TW_KEY_LEFT; break; 92 | case XK_Return: k = TW_KEY_RETURN; break; 93 | case XK_Insert: k = TW_KEY_INSERT; break; 94 | case XK_Delete: k = TW_KEY_DELETE; break; 95 | case XK_BackSpace: k = TW_KEY_BACKSPACE; break; 96 | case XK_Home: k = TW_KEY_HOME; break; 97 | case XK_Tab: k = TW_KEY_TAB; break; 98 | case XK_End: k = TW_KEY_END; break; 99 | 100 | #ifdef XK_Enter 101 | case XK_Enter: k = TW_KEY_RETURN; break; 102 | #endif 103 | 104 | #ifdef XK_KP_Home 105 | case XK_KP_Home: k = TW_KEY_HOME; break; 106 | case XK_KP_End: k = TW_KEY_END; break; 107 | case XK_KP_Delete: k = TW_KEY_DELETE; break; 108 | #endif 109 | 110 | #ifdef XK_KP_Up 111 | case XK_KP_Up: k = TW_KEY_UP; break; 112 | case XK_KP_Down: k = TW_KEY_DOWN; break; 113 | case XK_KP_Right: k = TW_KEY_RIGHT; break; 114 | case XK_KP_Left: k = TW_KEY_LEFT; break; 115 | #endif 116 | 117 | #ifdef XK_KP_Page_Up 118 | case XK_KP_Page_Up: k = TW_KEY_PAGE_UP; break; 119 | case XK_KP_Page_Down: k = TW_KEY_PAGE_DOWN; break; 120 | #endif 121 | 122 | #ifdef XK_KP_Tab 123 | case XK_KP_Tab: k = TW_KEY_TAB; break; 124 | #endif 125 | 126 | default: 127 | if (0) 128 | { 129 | // should we do that, or rely on the buffer (see code below) 130 | if (keysym > 12 && keysym < 127) 131 | k = keysym; 132 | } 133 | break; 134 | } 135 | 136 | if (k == 0 && num_char) 137 | { 138 | int i, handled = 0; 139 | for (i=0; i 0) ? TwKeyPressed(k, modifiers) : 0; 148 | } 149 | 150 | // ---------------------------------------------------------------------- 151 | // ---------------------------------------------------------------------- 152 | static int _XButtonEvent(XEvent *event) 153 | { 154 | TwMouseAction action = (event->type == ButtonPress) ? TW_MOUSE_PRESSED : TW_MOUSE_RELEASED; 155 | XButtonEvent *xbe = (XButtonEvent *)event; 156 | return TwMouseButton(action, xbe->button); 157 | } 158 | 159 | // ---------------------------------------------------------------------- 160 | // ---------------------------------------------------------------------- 161 | static int _XConfigureEvent(XEvent *event) 162 | { 163 | XConfigureEvent *xce = (XConfigureEvent *)event; 164 | TwWindowSize(xce->width, xce->height); 165 | return 0; 166 | } 167 | 168 | // ---------------------------------------------------------------------- 169 | // ---------------------------------------------------------------------- 170 | static int _XMotionEvent(XEvent *event) 171 | { 172 | XMotionEvent *xme = (XMotionEvent *)event; 173 | return TwMouseMotion(xme->x, xme->y); 174 | } 175 | 176 | // ---------------------------------------------------------------------- 177 | // ---------------------------------------------------------------------- 178 | TW_API int TW_CDECL_CALL TwEventX11(void *xevent) 179 | { 180 | XEvent *event = (XEvent *)xevent; 181 | 182 | switch (event->type) 183 | { 184 | case KeyPress: 185 | return _XKeyPress(xevent); 186 | 187 | case KeyRelease: 188 | return 0; // _XKeyRelease(xevent); 189 | 190 | case ButtonPress: 191 | case ButtonRelease: 192 | return _XButtonEvent(xevent); 193 | 194 | case MotionNotify: 195 | return _XMotionEvent(xevent); 196 | 197 | case ConfigureNotify: 198 | return _XConfigureEvent(xevent); 199 | 200 | default: 201 | break; 202 | } 203 | return 0; 204 | } 205 | 206 | -------------------------------------------------------------------------------- /src/anttweakbar/TwFonts.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdupuy/ssgi/1e44048af63779d49bd250b73386841edbfc98ea/src/anttweakbar/TwFonts.h -------------------------------------------------------------------------------- /src/anttweakbar/TwGraph.h: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------- 2 | // 3 | // @file TwGraph.h 4 | // @brief ITwGraph pure interface 5 | // @author Philippe Decaudin - http://www.antisphere.com 6 | // @license This file is part of the AntTweakBar library. 7 | // For conditions of distribution and use, see License.txt 8 | // 9 | // note: Private header 10 | // 11 | // --------------------------------------------------------------------------- 12 | 13 | 14 | #if !defined ANT_TW_GRAPH_INCLUDED 15 | #define ANT_TW_GRAPH_INCLUDED 16 | 17 | #include "TwColors.h" 18 | #include "TwFonts.h" 19 | 20 | 21 | // --------------------------------------------------------------------------- 22 | 23 | #ifdef DrawText // DirectX redefines 'DrawText' !! 24 | # undef DrawText 25 | #endif // DrawText 26 | 27 | class ITwGraph 28 | { 29 | public: 30 | virtual int Init() = 0; 31 | virtual int Shut() = 0; 32 | virtual void BeginDraw(int _WndWidth, int _WndHeight) = 0; 33 | virtual void EndDraw() = 0; 34 | virtual bool IsDrawing() = 0; 35 | virtual void Restore() = 0; 36 | 37 | virtual void DrawLine(int _X0, int _Y0, int _X1, int _Y1, color32 _Color0, color32 _Color1, bool _AntiAliased=false) = 0; 38 | virtual void DrawLine(int _X0, int _Y0, int _X1, int _Y1, color32 _Color, bool _AntiAliased=false) = 0; 39 | virtual void DrawRect(int _X0, int _Y0, int _X1, int _Y1, color32 _Color00, color32 _Color10, color32 _Color01, color32 _Color11) = 0; 40 | virtual void DrawRect(int _X0, int _Y0, int _X1, int _Y1, color32 _Color) = 0; 41 | enum Cull { CULL_NONE, CULL_CW, CULL_CCW }; 42 | virtual void DrawTriangles(int _NumTriangles, int *_Vertices, color32 *_Colors, Cull _CullMode) = 0; 43 | 44 | virtual void * NewTextObj() = 0; 45 | virtual void DeleteTextObj(void *_TextObj) = 0; 46 | virtual void BuildText(void *_TextObj, const std::string *_TextLines, color32 *_LineColors, color32 *_LineBgColors, int _NbLines, const CTexFont *_Font, int _Sep, int _BgWidth) = 0; 47 | virtual void DrawText(void *_TextObj, int _X, int _Y, color32 _Color, color32 _BgColor) = 0; 48 | 49 | virtual void ChangeViewport(int _X0, int _Y0, int _Width, int _Height, int _OffsetX, int _OffsetY) = 0; 50 | virtual void RestoreViewport() = 0; 51 | virtual void SetScissor(int _X0, int _Y0, int _Width, int _Height) = 0; 52 | 53 | virtual ~ITwGraph() {} // required by gcc 54 | }; 55 | 56 | // --------------------------------------------------------------------------- 57 | 58 | #endif // ANT_TW_GRAPH_INCLUDED 59 | -------------------------------------------------------------------------------- /src/anttweakbar/TwMgr.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdupuy/ssgi/1e44048af63779d49bd250b73386841edbfc98ea/src/anttweakbar/TwMgr.cpp -------------------------------------------------------------------------------- /src/anttweakbar/TwOpenGL.h: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------- 2 | // 3 | // @file TwOpenGL.h 4 | // @brief OpenGL graph functions 5 | // @author Philippe Decaudin - http://www.antisphere.com 6 | // @license This file is part of the AntTweakBar library. 7 | // For conditions of distribution and use, see License.txt 8 | // 9 | // notes: Private header 10 | // TAB=4 11 | // 12 | // --------------------------------------------------------------------------- 13 | 14 | 15 | #if !defined ANT_TW_OPENGL_INCLUDED 16 | #define ANT_TW_OPENGL_INCLUDED 17 | 18 | #include "TwGraph.h" 19 | 20 | // --------------------------------------------------------------------------- 21 | 22 | class CTwGraphOpenGL : public ITwGraph 23 | { 24 | public: 25 | virtual int Init(); 26 | virtual int Shut(); 27 | virtual void BeginDraw(int _WndWidth, int _WndHeight); 28 | virtual void EndDraw(); 29 | virtual bool IsDrawing(); 30 | virtual void Restore(); 31 | virtual void DrawLine(int _X0, int _Y0, int _X1, int _Y1, color32 _Color0, color32 _Color1, bool _AntiAliased=false); 32 | virtual void DrawLine(int _X0, int _Y0, int _X1, int _Y1, color32 _Color, bool _AntiAliased=false) { DrawLine(_X0, _Y0, _X1, _Y1, _Color, _Color, _AntiAliased); } 33 | virtual void DrawRect(int _X0, int _Y0, int _X1, int _Y1, color32 _Color00, color32 _Color10, color32 _Color01, color32 _Color11); 34 | virtual void DrawRect(int _X0, int _Y0, int _X1, int _Y1, color32 _Color) { DrawRect(_X0, _Y0, _X1, _Y1, _Color, _Color, _Color, _Color); } 35 | virtual void DrawTriangles(int _NumTriangles, int *_Vertices, color32 *_Colors, Cull _CullMode); 36 | 37 | virtual void * NewTextObj(); 38 | virtual void DeleteTextObj(void *_TextObj); 39 | virtual void BuildText(void *_TextObj, const std::string *_TextLines, color32 *_LineColors, color32 *_LineBgColors, int _NbLines, const CTexFont *_Font, int _Sep, int _BgWidth); 40 | virtual void DrawText(void *_TextObj, int _X, int _Y, color32 _Color, color32 _BgColor); 41 | 42 | virtual void ChangeViewport(int _X0, int _Y0, int _Width, int _Height, int _OffsetX, int _OffsetY); 43 | virtual void RestoreViewport(); 44 | virtual void SetScissor(int _X0, int _Y0, int _Width, int _Height); 45 | 46 | protected: 47 | bool m_Drawing; 48 | GLuint m_FontTexID; 49 | const CTexFont * m_FontTex; 50 | GLfloat m_PrevLineWidth; 51 | GLint m_PrevTexEnv; 52 | GLint m_PrevPolygonMode[2]; 53 | GLint m_MaxClipPlanes; 54 | GLint m_PrevTexture; 55 | GLint m_PrevArrayBufferARB; 56 | GLint m_PrevElementArrayBufferARB; 57 | GLboolean m_PrevVertexProgramARB; 58 | GLboolean m_PrevFragmentProgramARB; 59 | GLuint m_PrevProgramObjectARB; 60 | GLboolean m_PrevTexture3D; 61 | enum EMaxTextures { MAX_TEXTURES = 128 }; 62 | GLboolean m_PrevActiveTexture1D[MAX_TEXTURES]; 63 | GLboolean m_PrevActiveTexture2D[MAX_TEXTURES]; 64 | GLboolean m_PrevActiveTexture3D[MAX_TEXTURES]; 65 | GLboolean m_PrevClientTexCoordArray[MAX_TEXTURES]; 66 | GLint m_PrevActiveTextureARB; 67 | GLint m_PrevClientActiveTextureARB; 68 | bool m_SupportTexRect; 69 | GLboolean m_PrevTexRectARB; 70 | GLint m_PrevBlendEquation; 71 | GLint m_PrevBlendEquationRGB; 72 | GLint m_PrevBlendEquationAlpha; 73 | GLint m_PrevBlendSrcRGB; 74 | GLint m_PrevBlendDstRGB; 75 | GLint m_PrevBlendSrcAlpha; 76 | GLint m_PrevBlendDstAlpha; 77 | GLuint m_PrevVertexArray; 78 | GLint m_ViewportInit[4]; 79 | GLfloat m_ProjMatrixInit[16]; 80 | enum EMaxVtxAttribs { MAX_VERTEX_ATTRIBS = 128 }; 81 | GLint m_PrevEnabledVertexAttrib[MAX_VERTEX_ATTRIBS]; 82 | int m_WndWidth; 83 | int m_WndHeight; 84 | 85 | struct Vec2 { GLfloat x, y; Vec2(){} Vec2(GLfloat _X, GLfloat _Y):x(_X),y(_Y){} Vec2(int _X, int _Y):x(GLfloat(_X)),y(GLfloat(_Y)){} }; 86 | struct CTextObj 87 | { 88 | std::vector m_TextVerts; 89 | std::vector m_TextUVs; 90 | std::vector m_BgVerts; 91 | std::vectorm_Colors; 92 | std::vectorm_BgColors; 93 | }; 94 | }; 95 | 96 | // --------------------------------------------------------------------------- 97 | 98 | 99 | #endif // !defined ANT_TW_OPENGL_INCLUDED 100 | -------------------------------------------------------------------------------- /src/anttweakbar/TwOpenGLCore.h: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------- 2 | // 3 | // @file TwOpenGLCore.h 4 | // @brief OpenGL Core graph functions 5 | // @author Philippe Decaudin - http://www.antisphere.com 6 | // @license This file is part of the AntTweakBar library. 7 | // For conditions of distribution and use, see License.txt 8 | // 9 | // note: Private header 10 | // 11 | // --------------------------------------------------------------------------- 12 | 13 | 14 | #if !defined ANT_TW_OPENGL_CORE_INCLUDED 15 | #define ANT_TW_OPENGL_CORE_INCLUDED 16 | 17 | #include "TwGraph.h" 18 | 19 | // --------------------------------------------------------------------------- 20 | 21 | class CTwGraphOpenGLCore : public ITwGraph 22 | { 23 | public: 24 | virtual int Init(); 25 | virtual int Shut(); 26 | virtual void BeginDraw(int _WndWidth, int _WndHeight); 27 | virtual void EndDraw(); 28 | virtual bool IsDrawing(); 29 | virtual void Restore(); 30 | virtual void DrawLine(int _X0, int _Y0, int _X1, int _Y1, color32 _Color0, color32 _Color1, bool _AntiAliased=false); 31 | virtual void DrawLine(int _X0, int _Y0, int _X1, int _Y1, color32 _Color, bool _AntiAliased=false) { DrawLine(_X0, _Y0, _X1, _Y1, _Color, _Color, _AntiAliased); } 32 | virtual void DrawRect(int _X0, int _Y0, int _X1, int _Y1, color32 _Color00, color32 _Color10, color32 _Color01, color32 _Color11); 33 | virtual void DrawRect(int _X0, int _Y0, int _X1, int _Y1, color32 _Color) { DrawRect(_X0, _Y0, _X1, _Y1, _Color, _Color, _Color, _Color); } 34 | virtual void DrawTriangles(int _NumTriangles, int *_Vertices, color32 *_Colors, Cull _CullMode); 35 | 36 | virtual void * NewTextObj(); 37 | virtual void DeleteTextObj(void *_TextObj); 38 | virtual void BuildText(void *_TextObj, const std::string *_TextLines, color32 *_LineColors, color32 *_LineBgColors, int _NbLines, const CTexFont *_Font, int _Sep, int _BgWidth); 39 | virtual void DrawText(void *_TextObj, int _X, int _Y, color32 _Color, color32 _BgColor); 40 | 41 | virtual void ChangeViewport(int _X0, int _Y0, int _Width, int _Height, int _OffsetX, int _OffsetY); 42 | virtual void RestoreViewport(); 43 | virtual void SetScissor(int _X0, int _Y0, int _Width, int _Height); 44 | 45 | protected: 46 | bool m_Drawing; 47 | GLuint m_FontTexID; 48 | const CTexFont * m_FontTex; 49 | 50 | GLfloat m_PrevLineWidth; 51 | GLint m_PrevActiveTexture; 52 | GLint m_PrevTexture; 53 | GLint m_PrevVArray; 54 | GLboolean m_PrevLineSmooth; 55 | GLboolean m_PrevCullFace; 56 | GLboolean m_PrevDepthTest; 57 | GLboolean m_PrevBlend; 58 | GLint m_PrevSrcBlend; 59 | GLint m_PrevDstBlend; 60 | GLboolean m_PrevScissorTest; 61 | GLint m_PrevScissorBox[4]; 62 | GLint m_PrevViewport[4]; 63 | GLuint m_PrevProgramObject; 64 | 65 | GLuint m_LineRectVS; 66 | GLuint m_LineRectFS; 67 | GLuint m_LineRectProgram; 68 | GLuint m_LineRectVArray; 69 | GLuint m_LineRectVertices; 70 | GLuint m_LineRectColors; 71 | GLuint m_TriVS; 72 | GLuint m_TriFS; 73 | GLuint m_TriProgram; 74 | GLuint m_TriUniVS; 75 | GLuint m_TriUniFS; 76 | GLuint m_TriUniProgram; 77 | GLuint m_TriTexVS; 78 | GLuint m_TriTexFS; 79 | GLuint m_TriTexProgram; 80 | GLuint m_TriTexUniVS; 81 | GLuint m_TriTexUniFS; 82 | GLuint m_TriTexUniProgram; 83 | GLuint m_TriVArray; 84 | GLuint m_TriVertices; 85 | GLuint m_TriUVs; 86 | GLuint m_TriColors; 87 | GLint m_TriLocationOffset; 88 | GLint m_TriLocationWndSize; 89 | GLint m_TriUniLocationOffset; 90 | GLint m_TriUniLocationWndSize; 91 | GLint m_TriUniLocationColor; 92 | GLint m_TriTexLocationOffset; 93 | GLint m_TriTexLocationWndSize; 94 | GLint m_TriTexLocationTexture; 95 | GLint m_TriTexUniLocationOffset; 96 | GLint m_TriTexUniLocationWndSize; 97 | GLint m_TriTexUniLocationColor; 98 | GLint m_TriTexUniLocationTexture; 99 | size_t m_TriBufferSize; 100 | 101 | int m_WndWidth; 102 | int m_WndHeight; 103 | int m_OffsetX; 104 | int m_OffsetY; 105 | 106 | struct Vec2 { GLfloat x, y; Vec2(){} Vec2(GLfloat _X, GLfloat _Y):x(_X),y(_Y){} Vec2(int _X, int _Y):x(GLfloat(_X)),y(GLfloat(_Y)){} }; 107 | struct CTextObj 108 | { 109 | std::vector m_TextVerts; 110 | std::vector m_TextUVs; 111 | std::vector m_BgVerts; 112 | std::vectorm_Colors; 113 | std::vectorm_BgColors; 114 | }; 115 | void ResizeTriBuffers(size_t _NewSize); 116 | }; 117 | 118 | // --------------------------------------------------------------------------- 119 | 120 | 121 | #endif // !defined ANT_TW_OPENGL_CORE_INCLUDED 122 | -------------------------------------------------------------------------------- /src/anttweakbar/TwPrecomp.cpp: -------------------------------------------------------------------------------- 1 | #include "TwPrecomp.h" 2 | -------------------------------------------------------------------------------- /src/anttweakbar/TwPrecomp.h: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------- 2 | // 3 | // @file TwPrecomp.h 4 | // @brief Precompiled header 5 | // @author Philippe Decaudin - http://www.antisphere.com 6 | // @license This file is part of the AntTweakBar library. 7 | // For conditions of distribution and use, see License.txt 8 | // 9 | // note: Private header 10 | // 11 | // --------------------------------------------------------------------------- 12 | 13 | 14 | #if !defined ANT_TW_PRECOMP_INCLUDED 15 | #define ANT_TW_PRECOMP_INCLUDED 16 | 17 | 18 | #if defined _MSC_VER 19 | # pragma warning(disable: 4514) // unreferenced inline function has been removed 20 | # pragma warning(disable: 4710) // function not inlined 21 | # pragma warning(disable: 4786) // template name truncated 22 | # pragma warning(disable: 4530) // exceptions not handled 23 | # define _CRT_SECURE_NO_DEPRECATE // visual 8 secure crt warning 24 | #endif 25 | 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | 34 | #if defined(_MSC_VER) && _MSC_VER<=1200 35 | # pragma warning(push, 3) 36 | #endif 37 | #include 38 | #include 39 | #include 40 | #include 41 | #include 42 | #include 43 | #if defined(_MSC_VER) && _MSC_VER<=1200 44 | # pragma warning(pop) 45 | #endif 46 | 47 | #if defined(_UNIX) 48 | # define ANT_UNIX 49 | # include 50 | # define GLX_GLXEXT_LEGACY 51 | # include 52 | # include 53 | # include 54 | # include 55 | # undef _WIN32 56 | # undef WIN32 57 | # undef _WIN64 58 | # undef WIN64 59 | # undef _WINDOWS 60 | # undef ANT_WINDOWS 61 | # undef ANT_OSX 62 | #elif defined(_MACOSX) 63 | # define ANT_OSX 64 | # include 65 | # include 66 | # include 67 | # include 68 | # undef _WIN32 69 | # undef WIN32 70 | # undef _WIN64 71 | # undef WIN64 72 | # undef _WINDOWS 73 | # undef ANT_WINDOWS 74 | # undef ANT_UNIX 75 | #elif defined(_WINDOWS) || defined(WIN32) || defined(WIN64) || defined(_WIN32) || defined(_WIN64) 76 | # define ANT_WINDOWS 77 | # ifndef WIN32_LEAN_AND_MEAN 78 | # define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers 79 | # endif 80 | # include 81 | # include 82 | #endif 83 | 84 | #if !defined(ANT_OGL_HEADER_INCLUDED) 85 | # if defined(ANT_OSX) 86 | # include 87 | # else 88 | # include // must be included after windows.h 89 | # endif 90 | # define ANT_OGL_HEADER_INCLUDED 91 | #endif 92 | 93 | #endif // !defined ANT_TW_PRECOMP_INCLUDED 94 | -------------------------------------------------------------------------------- /src/anttweakbar/res/FontChars.txt: -------------------------------------------------------------------------------- 1 |  !"#$%&'()*+,-./0123456789:;<=>? 2 | @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ 3 | `abcdefghijklmnopqrstuvwxyz{|}~√ 4 | €‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ 5 |  ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ 6 | ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞß 7 | àáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ 8 | 9 | 032 10 | 033 ! 11 | 034 " 12 | 035 # 13 | 036 $ 14 | 037 % 15 | 038 & 16 | 039 ' 17 | 040 ( 18 | 041 ) 19 | 042 * 20 | 043 + 21 | 044 , 22 | 045 - 23 | 046 . 24 | 047 / 25 | 048 0 26 | 049 1 27 | 050 2 28 | 051 3 29 | 052 4 30 | 053 5 31 | 054 6 32 | 055 7 33 | 056 8 34 | 057 9 35 | 058 : 36 | 059 ; 37 | 060 < 38 | 061 = 39 | 062 > 40 | 063 ? 41 | 064 @ 42 | 065 A 43 | 066 B 44 | 067 C 45 | 068 D 46 | 069 E 47 | 070 F 48 | 071 G 49 | 072 H 50 | 073 I 51 | 074 J 52 | 075 K 53 | 076 L 54 | 077 M 55 | 078 N 56 | 079 O 57 | 080 P 58 | 081 Q 59 | 082 R 60 | 083 S 61 | 084 T 62 | 085 U 63 | 086 V 64 | 087 W 65 | 088 X 66 | 089 Y 67 | 090 Z 68 | 091 [ 69 | 092 \ 70 | 093 ] 71 | 094 ^ 72 | 095 _ 73 | 096 ` 74 | 097 a 75 | 098 b 76 | 099 c 77 | 100 d 78 | 101 e 79 | 102 f 80 | 103 g 81 | 104 h 82 | 105 i 83 | 106 j 84 | 107 k 85 | 108 l 86 | 109 m 87 | 110 n 88 | 111 o 89 | 112 p 90 | 113 q 91 | 114 r 92 | 115 s 93 | 116 t 94 | 117 u 95 | 118 v 96 | 119 w 97 | 120 x 98 | 121 y 99 | 122 z 100 | 123 { 101 | 124 | 102 | 125 } 103 | 126 ~ 104 | 127 √ 105 | 128 € 106 | 129  107 | 130 ‚ 108 | 131 ƒ 109 | 132 „ 110 | 133 … 111 | 134 † 112 | 135 ‡ 113 | 136 ˆ 114 | 137 ‰ 115 | 138 Š 116 | 139 ‹ 117 | 140 Œ 118 | 141  119 | 142 Ž 120 | 143  121 | 144  122 | 145 ‘ 123 | 146 ’ 124 | 147 “ 125 | 148 ” 126 | 149 • 127 | 150 – 128 | 151 — 129 | 152 ˜ 130 | 153 ™ 131 | 154 š 132 | 155 › 133 | 156 œ 134 | 157  135 | 158 ž 136 | 159 Ÿ 137 | 160   138 | 161 ¡ 139 | 162 ¢ 140 | 163 £ 141 | 164 ¤ 142 | 165 ¥ 143 | 166 ¦ 144 | 167 § 145 | 168 ¨ 146 | 169 © 147 | 170 ª 148 | 171 « 149 | 172 ¬ 150 | 173 ­ 151 | 174 ® 152 | 175 ¯ 153 | 176 ° 154 | 177 ± 155 | 178 ² 156 | 179 ³ 157 | 180 ´ 158 | 181 µ 159 | 182 ¶ 160 | 183 · 161 | 184 ¸ 162 | 185 ¹ 163 | 186 º 164 | 187 » 165 | 188 ¼ 166 | 189 ½ 167 | 190 ¾ 168 | 191 ¿ 169 | 192 À 170 | 193 Á 171 | 194  172 | 195 à 173 | 196 Ä 174 | 197 Å 175 | 198 Æ 176 | 199 Ç 177 | 200 È 178 | 201 É 179 | 202 Ê 180 | 203 Ë 181 | 204 Ì 182 | 205 Í 183 | 206 Î 184 | 207 Ï 185 | 208 Ð 186 | 209 Ñ 187 | 210 Ò 188 | 211 Ó 189 | 212 Ô 190 | 213 Õ 191 | 214 Ö 192 | 215 × 193 | 216 Ø 194 | 217 Ù 195 | 218 Ú 196 | 219 Û 197 | 220 Ü 198 | 221 Ý 199 | 222 Þ 200 | 223 ß 201 | 224 à 202 | 225 á 203 | 226 â 204 | 227 ã 205 | 228 ä 206 | 229 å 207 | 230 æ 208 | 231 ç 209 | 232 è 210 | 233 é 211 | 234 ê 212 | 235 ë 213 | 236 ì 214 | 237 í 215 | 238 î 216 | 239 ï 217 | 240 ð 218 | 241 ñ 219 | 242 ò 220 | 243 ó 221 | 244 ô 222 | 245 õ 223 | 246 ö 224 | 247 ÷ 225 | 248 ø 226 | 249 ù 227 | 250 ú 228 | 251 û 229 | 252 ü 230 | 253 ý 231 | 254 þ 232 | 255 ÿ 233 | -------------------------------------------------------------------------------- /src/anttweakbar/res/cur00000.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdupuy/ssgi/1e44048af63779d49bd250b73386841edbfc98ea/src/anttweakbar/res/cur00000.cur -------------------------------------------------------------------------------- /src/anttweakbar/res/cur00001.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdupuy/ssgi/1e44048af63779d49bd250b73386841edbfc98ea/src/anttweakbar/res/cur00001.cur -------------------------------------------------------------------------------- /src/anttweakbar/res/cur00002.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdupuy/ssgi/1e44048af63779d49bd250b73386841edbfc98ea/src/anttweakbar/res/cur00002.cur -------------------------------------------------------------------------------- /src/anttweakbar/res/cur00003.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdupuy/ssgi/1e44048af63779d49bd250b73386841edbfc98ea/src/anttweakbar/res/cur00003.cur -------------------------------------------------------------------------------- /src/anttweakbar/res/cur00004.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdupuy/ssgi/1e44048af63779d49bd250b73386841edbfc98ea/src/anttweakbar/res/cur00004.cur -------------------------------------------------------------------------------- /src/anttweakbar/res/cur00005.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdupuy/ssgi/1e44048af63779d49bd250b73386841edbfc98ea/src/anttweakbar/res/cur00005.cur -------------------------------------------------------------------------------- /src/anttweakbar/res/cur00006.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdupuy/ssgi/1e44048af63779d49bd250b73386841edbfc98ea/src/anttweakbar/res/cur00006.cur -------------------------------------------------------------------------------- /src/anttweakbar/res/cur00007.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdupuy/ssgi/1e44048af63779d49bd250b73386841edbfc98ea/src/anttweakbar/res/cur00007.cur -------------------------------------------------------------------------------- /src/anttweakbar/res/cur00008.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdupuy/ssgi/1e44048af63779d49bd250b73386841edbfc98ea/src/anttweakbar/res/cur00008.cur -------------------------------------------------------------------------------- /src/anttweakbar/res/cur00009.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdupuy/ssgi/1e44048af63779d49bd250b73386841edbfc98ea/src/anttweakbar/res/cur00009.cur -------------------------------------------------------------------------------- /src/anttweakbar/res/cur00010.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdupuy/ssgi/1e44048af63779d49bd250b73386841edbfc98ea/src/anttweakbar/res/cur00010.cur -------------------------------------------------------------------------------- /src/anttweakbar/res/cur00011.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdupuy/ssgi/1e44048af63779d49bd250b73386841edbfc98ea/src/anttweakbar/res/cur00011.cur -------------------------------------------------------------------------------- /src/anttweakbar/res/cur00012.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdupuy/ssgi/1e44048af63779d49bd250b73386841edbfc98ea/src/anttweakbar/res/cur00012.cur -------------------------------------------------------------------------------- /src/anttweakbar/res/cur00013.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdupuy/ssgi/1e44048af63779d49bd250b73386841edbfc98ea/src/anttweakbar/res/cur00013.cur -------------------------------------------------------------------------------- /src/anttweakbar/res/curs00.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 9 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 10 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 11 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 | 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 | 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 | 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 16 | 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 17 | 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 18 | 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 19 | 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 20 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 | 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 | 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 | 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 | 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 25 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 26 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 27 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/curs01.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 11 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 12 | 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 | 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 | 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 15 | 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 16 | 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 17 | 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 18 | 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 19 | 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 20 | 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 21 | 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 | 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 23 | 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 24 | 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 25 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/curs02.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 | 1 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 8 | 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 9 | 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 10 | 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 11 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 | 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 | 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 | 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 16 | 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 17 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 18 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 19 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 20 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 | 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 | 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 | 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 | 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 25 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 26 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 27 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 28 | 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 | 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 | 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/curs03.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 | 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 8 | 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 9 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 10 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 11 | 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 | 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 | 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 | 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 | 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 16 | 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 17 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 18 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 19 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 20 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 | 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 | 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 | 0 0 0 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 | 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 26 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 27 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 28 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/curs04.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 7 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 8 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 9 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 10 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 | 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 | 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 14 | 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 15 | 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 16 | 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 17 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 18 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 1 19 | 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 20 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 | 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 | 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 | 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 | 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 27 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/curs05.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 7 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 8 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 | 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 | 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 | 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 | 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 | 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 16 | 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 17 | 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 18 | 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 0 19 | 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 20 | 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 21 | 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 22 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/curs06.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 | 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 13 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 14 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 15 | 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 16 | 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 1 17 | 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 18 | 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 19 | 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 20 | 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 | 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 | 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 23 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 24 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 25 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/curs07.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 | 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 9 | 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 10 | 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 11 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 12 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 | 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 | 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 16 | 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 17 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 18 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 19 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 20 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 | 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 22 | 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 23 | 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 24 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 25 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 26 | 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 | 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 | 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/curs08.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 | 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 8 | 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 9 | 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 10 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 11 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 | 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 | 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 | 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 16 | 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 17 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 18 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 19 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 20 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 | 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 | 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 | 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 | 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 25 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 26 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 27 | 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 28 | 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 | 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 30 | 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/curs09.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 7 | 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 8 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 9 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 10 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 | 0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 | 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 | 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 | 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 16 | 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 17 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 18 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 19 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 20 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 | 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 | 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 | 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 25 | 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 26 | 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 27 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 28 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 | 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 | 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/curs10.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 9 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 | 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 | 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 | 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 | 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 | 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 15 | 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 16 | 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 17 | 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 18 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 19 | 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 20 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 21 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 22 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 26 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 27 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 28 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 29 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/curs11.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 | 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 14 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 15 | 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 16 | 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 1 17 | 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 18 | 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 19 | 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 20 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 | 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 | 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 | 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 27 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 28 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 29 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/curs12.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 | 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 | 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 11 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 12 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 13 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 | 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 16 | 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 17 | 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 18 | 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 1 19 | 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 20 | 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 21 | 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 22 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 23 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 | 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/curs13.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 | 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 | 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 | 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 10 | 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 11 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 12 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 13 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 14 | 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 | 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 16 | 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 17 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 18 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 19 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 20 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 | 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 | 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 | 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 24 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 25 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27 | 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 28 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/mask00.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 | 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 9 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 10 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 11 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 12 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 | 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 | 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 15 | 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 16 | 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 17 | 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 18 | 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 19 | 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 20 | 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 21 | 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 | 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 | 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 24 | 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 25 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 26 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 27 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/mask01.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 10 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 11 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 12 | 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 13 | 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 | 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 15 | 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 16 | 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 17 | 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 18 | 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 19 | 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 20 | 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 21 | 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 | 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 23 | 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 24 | 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 25 | 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 26 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/mask02.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 7 | 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 8 | 1 1 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 0 0 0 9 | 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 10 | 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 11 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 12 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 | 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 | 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 | 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 16 | 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 17 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 18 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 19 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 20 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 | 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 | 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 | 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 24 | 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 25 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 26 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 0 0 0 0 1 1 1 1 1 1 1 27 | 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 0 0 28 | 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 29 | 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 | 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/mask03.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 7 | 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 1 1 8 | 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 9 | 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 10 | 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 11 | 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 12 | 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 | 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 | 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 | 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 16 | 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 17 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 18 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 19 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 20 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 | 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 | 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 | 0 0 0 0 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 | 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 25 | 1 1 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 26 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 27 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 28 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 29 | 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 | 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/mask04.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 7 | 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 8 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 9 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 10 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 | 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 | 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 13 | 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 14 | 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 15 | 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 16 | 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 17 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 1 18 | 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 19 | 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 20 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 21 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 | 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 | 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 | 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 26 | 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 27 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 28 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/mask05.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 6 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 7 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 8 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 9 | 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 10 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 11 | 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 | 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 13 | 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 | 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 16 | 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 17 | 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 18 | 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 19 | 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 20 | 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 21 | 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 22 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 23 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/mask06.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 | 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 | 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 9 | 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 12 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 13 | 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 1 0 0 14 | 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 15 | 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 16 | 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 17 | 1 0 0 0 0 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 18 | 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 19 | 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 20 | 0 0 0 1 1 1 0 0 0 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 | 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 22 | 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 23 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 24 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 25 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 | 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27 | 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/mask07.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 | 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 8 | 1 1 1 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 9 | 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 10 | 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 11 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0 0 12 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 13 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 | 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 | 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 16 | 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 17 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 18 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 19 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 20 | 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 21 | 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 22 | 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 23 | 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0 24 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 0 0 0 0 0 25 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 26 | 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27 | 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 | 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 | 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 | 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/mask08.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 7 | 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 8 | 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 0 9 | 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 10 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 11 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 | 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 | 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 | 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 16 | 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 17 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 18 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 19 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 20 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 | 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 | 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 | 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 24 | 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 25 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 26 | 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 0 1 1 1 0 0 0 0 0 27 | 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 28 | 0 0 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 | 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 30 | 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 31 | 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/mask09.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 7 | 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 8 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 9 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 10 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 | 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 | 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 13 | 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 | 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 | 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 16 | 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 17 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 18 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 19 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 20 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 | 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 | 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 | 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 24 | 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 25 | 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 26 | 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 27 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 0 0 0 0 28 | 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 29 | 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 | 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/mask10.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 8 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 9 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 | 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 | 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 | 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 | 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 | 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 15 | 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 16 | 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 17 | 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 18 | 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 19 | 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 20 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 21 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 22 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 | 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 | 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 | 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 26 | 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 27 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 28 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 29 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 30 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/mask11.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 | 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 13 | 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 14 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 0 0 0 0 0 15 | 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 0 0 0 1 1 16 | 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 17 | 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 18 | 1 1 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 19 | 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 20 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 | 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 25 | 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 26 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 27 | 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 28 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 29 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 30 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/mask12.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 | 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 | 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 10 | 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 11 | 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 12 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 13 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 14 | 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 | 0 0 0 1 1 1 0 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 16 | 1 1 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 17 | 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 1 18 | 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 19 | 1 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 20 | 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 21 | 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 22 | 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 23 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 24 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27 | 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 | 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 | 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/res/mask13.pbm: -------------------------------------------------------------------------------- 1 | P1 2 | # Created by Paint Shop Pro 3 | 32 32 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 | 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 | 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 9 | 1 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 10 | 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 11 | 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 1 12 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 13 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 14 | 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 | 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 16 | 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 17 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 18 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 19 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 20 | 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 | 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 | 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 23 | 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0 24 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 25 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 26 | 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 27 | 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 28 | 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 29 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 | -------------------------------------------------------------------------------- /src/anttweakbar/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by AntTweakBar.rc 4 | // 5 | #define IDC_CURSOR1 101 6 | #define IDC_CURSOR2 102 7 | #define IDC_CURSOR3 103 8 | #define IDC_CURSOR4 104 9 | #define IDC_CURSOR5 105 10 | #define IDC_CURSOR6 106 11 | #define IDC_CURSOR7 107 12 | #define IDC_CURSOR8 108 13 | #define IDC_CURSOR9 109 14 | #define IDC_CURSOR10 110 15 | #define IDC_CURSOR11 111 16 | #define IDC_CURSOR12 112 17 | #define IDC_CURSOR13 113 18 | #define IDC_CURSOR14 114 19 | 20 | // Next default values for new objects 21 | // 22 | #ifdef APSTUDIO_INVOKED 23 | #ifndef APSTUDIO_READONLY_SYMBOLS 24 | #define _APS_NEXT_RESOURCE_VALUE 115 25 | #define _APS_NEXT_COMMAND_VALUE 40001 26 | #define _APS_NEXT_CONTROL_VALUE 1001 27 | #define _APS_NEXT_SYMED_VALUE 101 28 | #endif 29 | #endif 30 | -------------------------------------------------------------------------------- /src/callbacks.hpp: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////// 2 | // \file callbacks.hpp 3 | // \author Jonathan Dupuy (onrendering@gmail.com) 4 | // \brief main callbacks 5 | // 6 | /////////////////////////////////////////////////////////////////////// 7 | 8 | #ifndef _CALLBACKS_HPP_ 9 | #define _CALLBACKS_HPP_ 10 | 11 | // -------------------------------------------------------------------- 12 | // Includes 13 | #include "GL3/gl3w.h" 14 | #include "GL/freeglut.h" 15 | #include "debug.hpp" 16 | 17 | 18 | // -------------------------------------------------------------------- 19 | // Structures 20 | typedef struct { 21 | GLint width, height; 22 | GLint major, minor; 23 | GLint glutDisplayMode; 24 | } WindowParams; 25 | 26 | 27 | // -------------------------------------------------------------------- 28 | // Core configuration functions 29 | GLvoid set_window_params(WindowParams &windowParams); 30 | 31 | 32 | // -------------------------------------------------------------------- 33 | // GLUT callbacks 34 | GLvoid on_init(GLint argc, GLchar **argv); 35 | GLvoid on_resize(GLint w, GLint h); 36 | GLvoid on_keypress(GLubyte key, GLint x, GLint y); 37 | GLvoid on_keyrelease(GLubyte key, GLint x, GLint y); 38 | GLvoid on_mousebutton(GLint button, GLint state, GLint x, GLint y); 39 | GLvoid on_mousemotion(GLint x, GLint y); 40 | GLvoid on_mousepassivemotion(GLint x, GLint y); 41 | GLvoid on_mousewheel(GLint wheel, GLint direction, GLint x, GLint y); 42 | GLvoid on_display(); 43 | GLvoid on_exit(); 44 | 45 | #endif 46 | 47 | -------------------------------------------------------------------------------- /src/debug.cpp: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////// 2 | // \file debug.cpp 3 | // \author Jonathan Dupuy (onrendering@gmail.com) 4 | // \brief Debug macros 5 | // 6 | /////////////////////////////////////////////////////////////////////// 7 | 8 | 9 | // -------------------------------------------------------------------- 10 | // Includes 11 | #include 12 | #include 13 | #include "debug.hpp" 14 | 15 | // private namespace 16 | namespace impl { 17 | 18 | /////////////////////////////////////////////////////////////////////// 19 | // Get Instance 20 | Log& Log::GetInstance() { 21 | static Log log; 22 | return log; 23 | } 24 | 25 | 26 | /////////////////////////////////////////////////////////////////////// 27 | // Constructor 28 | Log::Log() : mOutputStream("log.txt") { 29 | assert(mOutputStream.is_open() && "Failed to create log file."); 30 | mOutputStream << __DATE__ <<':' << __TIME__ << '\n'; 31 | mOutputStream << ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << '\n'; 32 | } 33 | 34 | 35 | /////////////////////////////////////////////////////////////////////// 36 | // Destructor 37 | Log::~Log() { 38 | mOutputStream.close(); 39 | } 40 | 41 | 42 | /////////////////////////////////////////////////////////////////////// 43 | // Print 44 | void Log::Print(const std::string& message) { 45 | mOutputStream << "> " 46 | << message 47 | << std::endl; 48 | std::cout << message << std::endl; 49 | } 50 | 51 | } // namespace impl 52 | 53 | -------------------------------------------------------------------------------- /src/debug.hpp: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////// 2 | // \file debug.hpp 3 | // \author Jonathan Dupuy (onrendering@gmail.com) 4 | // \brief Debug macros 5 | // 6 | /////////////////////////////////////////////////////////////////////// 7 | 8 | #ifndef _DEBUG_HPP_ 9 | #define _DEBUG_HPP_ 10 | 11 | // -------------------------------------------------------------------- 12 | // Includes 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | 19 | 20 | // -------------------------------------------------------------------- 21 | // Class forward decl 22 | namespace impl { 23 | class Log; 24 | } 25 | 26 | 27 | // -------------------------------------------------------------------- 28 | // FILE macro 29 | #ifdef _WIN32 30 | # define FILE (strrchr(__FILE__, '\\') ? \ 31 | strrchr(__FILE__, '\\') + 1 : __FILE__) 32 | #else 33 | # define FILE (strrchr(__FILE__, '/') ? \ 34 | strrchr(__FILE__, '/') + 1 : __FILE__) 35 | #endif 36 | 37 | 38 | // -------------------------------------------------------------------- 39 | // Logger 40 | #ifndef NDEBUG 41 | # define LOG(msg) do {\ 42 | std::ostringstream __debug_stream__; \ 43 | __debug_stream__ << msg; \ 44 | impl::Log::GetInstance().Print(\ 45 | __debug_stream__.str()); \ 46 | } while(false) 47 | #else 48 | # define LOG(msg) do{} while(false) 49 | #endif 50 | 51 | /* 52 | // usage 53 | LOG("Hello " << "world!"); 54 | */ 55 | 56 | 57 | // -------------------------------------------------------------------- 58 | // assert 59 | #ifndef NDEBUG 60 | #define ASSERT(expr) \ 61 | do {\ 62 | if((expr) == false) {\ 63 | LOG("Assertion failed: " << #expr \ 64 | << ", " \ 65 | << FILE \ 66 | << ", " \ 67 | << __LINE__); \ 68 | abort(); \ 69 | } \ 70 | } while(false) 71 | #else 72 | #define ASSERT(expr) do{} while(false) 73 | #endif 74 | 75 | /* 76 | // usage 77 | _ASSERT(a==1 && "testing equality"); 78 | */ 79 | 80 | 81 | // ==================================================================== 82 | // Private data 83 | namespace impl { 84 | // -------------------------------------------------------------------- 85 | // Log class 86 | class Log { 87 | public: 88 | static Log& GetInstance(); 89 | void Print(const std::string& message); 90 | private: 91 | Log(); 92 | ~Log(); 93 | std::ofstream mOutputStream; 94 | }; 95 | } 96 | 97 | #endif 98 | 99 | -------------------------------------------------------------------------------- /src/freeglut/GL/Makefile.am: -------------------------------------------------------------------------------- 1 | ## Process this file with automake to produce Makefile.in 2 | 3 | libfreeglutincludedir = $(includedir)/GL 4 | libfreeglutinclude_HEADERS = freeglut.h freeglut_std.h freeglut_ext.h @HEADER@ 5 | EXTRA_HEADERS = glut.h 6 | -------------------------------------------------------------------------------- /src/freeglut/GL/freeglut.h: -------------------------------------------------------------------------------- 1 | #ifndef __FREEGLUT_H__ 2 | #define __FREEGLUT_H__ 3 | 4 | /* 5 | * freeglut.h 6 | * 7 | * The freeglut library include file 8 | * 9 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 10 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 11 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 12 | * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 13 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 14 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 15 | */ 16 | 17 | #include "freeglut_std.h" 18 | #include "freeglut_ext.h" 19 | 20 | /*** END OF FILE ***/ 21 | 22 | #endif /* __FREEGLUT_H__ */ 23 | -------------------------------------------------------------------------------- /src/freeglut/GL/glut.h: -------------------------------------------------------------------------------- 1 | #ifndef __GLUT_H__ 2 | #define __GLUT_H__ 3 | 4 | /* 5 | * glut.h 6 | * 7 | * The freeglut library include file 8 | * 9 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 10 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 11 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 12 | * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 13 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 14 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 15 | */ 16 | 17 | #include "freeglut_std.h" 18 | 19 | /*** END OF FILE ***/ 20 | 21 | #endif /* __GLUT_H__ */ 22 | -------------------------------------------------------------------------------- /src/freeglut/freeglut_display.c: -------------------------------------------------------------------------------- 1 | /* 2 | * freeglut_display.c 3 | * 4 | * Display message posting, context buffer swapping. 5 | * 6 | * Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved. 7 | * Written by Pawel W. Olszta, 8 | * Creation date: Fri Dec 3 1999 9 | * 10 | * Permission is hereby granted, free of charge, to any person obtaining a 11 | * copy of this software and associated documentation files (the "Software"), 12 | * to deal in the Software without restriction, including without limitation 13 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, 14 | * and/or sell copies of the Software, and to permit persons to whom the 15 | * Software is furnished to do so, subject to the following conditions: 16 | * 17 | * The above copyright notice and this permission notice shall be included 18 | * in all copies or substantial portions of the Software. 19 | * 20 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 21 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 23 | * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 24 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 25 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 26 | */ 27 | 28 | #include 29 | #include "freeglut_internal.h" 30 | 31 | /* -- INTERFACE FUNCTIONS -------------------------------------------------- */ 32 | 33 | /* 34 | * Marks the current window to have the redisplay performed when possible... 35 | */ 36 | void FGAPIENTRY glutPostRedisplay( void ) 37 | { 38 | FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutPostRedisplay" ); 39 | if ( ! fgStructure.CurrentWindow ) 40 | { 41 | fgError ( " ERROR: Function <%s> called" 42 | " with no current window defined.", "glutPostRedisplay" ) ; 43 | } 44 | 45 | fgStructure.CurrentWindow->State.Redisplay = GL_TRUE; 46 | } 47 | 48 | /* 49 | * Swaps the buffers for the current window (if any) 50 | */ 51 | void FGAPIENTRY glutSwapBuffers( void ) 52 | { 53 | FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutSwapBuffers" ); 54 | FREEGLUT_EXIT_IF_NO_WINDOW ( "glutSwapBuffers" ); 55 | 56 | /* 57 | * "glXSwapBuffers" already performs an implicit call to "glFlush". What 58 | * about "SwapBuffers"? 59 | */ 60 | /* glFlush( );*/ 61 | if( ! fgStructure.CurrentWindow->Window.DoubleBuffered ) 62 | return; 63 | 64 | #if TARGET_HOST_POSIX_X11 65 | glXSwapBuffers( fgDisplay.Display, fgStructure.CurrentWindow->Window.Handle ); 66 | #elif TARGET_HOST_MS_WINDOWS 67 | SwapBuffers( fgStructure.CurrentWindow->Window.Device ); 68 | #endif 69 | 70 | /* GLUT_FPS env var support */ 71 | if( fgState.FPSInterval ) 72 | { 73 | GLint t = glutGet( GLUT_ELAPSED_TIME ); 74 | fgState.SwapCount++; 75 | if( fgState.SwapTime == 0 ) 76 | fgState.SwapTime = t; 77 | else if( t - fgState.SwapTime > fgState.FPSInterval ) 78 | { 79 | float time = 0.001f * ( t - fgState.SwapTime ); 80 | float fps = ( float )fgState.SwapCount / time; 81 | fprintf( stderr, 82 | "freeglut: %d frames in %.2f seconds = %.2f FPS\n", 83 | fgState.SwapCount, time, fps ); 84 | fgState.SwapTime = t; 85 | fgState.SwapCount = 0; 86 | } 87 | } 88 | } 89 | 90 | /* 91 | * Mark appropriate window to be displayed 92 | */ 93 | void FGAPIENTRY glutPostWindowRedisplay( int windowID ) 94 | { 95 | SFG_Window* window; 96 | 97 | FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutPostWindowRedisplay" ); 98 | window = fgWindowByID( windowID ); 99 | freeglut_return_if_fail( window ); 100 | window->State.Redisplay = GL_TRUE; 101 | } 102 | 103 | /*** END OF FILE ***/ 104 | -------------------------------------------------------------------------------- /src/freeglut/freeglut_glutfont_definitions.c: -------------------------------------------------------------------------------- 1 | /* 2 | * freeglut_glutfont_definitions.c 3 | * 4 | * Bitmap and stroke fonts displaying. 5 | * 6 | * Copyright (c) 2003 Stephen J. Baker (whether he wants it or not). 7 | * All Rights Reserved. 8 | * Written by John F. Fay , who releases the 9 | * copyright over to the "freeglut" project lead. 10 | * Creation date: Mon July 21 2003 11 | * 12 | * Permission is hereby granted, free of charge, to any person obtaining a 13 | * copy of this software and associated documentation files (the "Software"), 14 | * to deal in the Software without restriction, including without limitation 15 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, 16 | * and/or sell copies of the Software, and to permit persons to whom the 17 | * Software is furnished to do so, subject to the following conditions: 18 | * 19 | * The above copyright notice and this permission notice shall be included 20 | * in all copies or substantial portions of the Software. 21 | * 22 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 23 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 24 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 25 | * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 26 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 27 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 28 | */ 29 | 30 | /* 31 | * This file is necessary for the *nix version of "freeglut" because the 32 | * original GLUT defined its font variables in rather an unusual way. 33 | * Publicly, in "glut.h", they were defined as "void *". Privately, 34 | * in one of the source code files, they were defined as pointers to a 35 | * structure. Most compilers and linkers are satisfied with the "void *" 36 | * and don't go any farther, but some of them balked. In particular, 37 | * when compiling with "freeglut" and then trying to run using the GLUT 38 | * ".so" library, some of them would give an error. So we are having to 39 | * create this file to define the variables as pointers to an unusual 40 | * structure to match GLUT. 41 | */ 42 | 43 | /* 44 | * freeglut_internal.h uses some GL types, but including the GL header portably 45 | * is a bit tricky, so we include freeglut_std.h here, which contains the 46 | * necessary machinery. But this poses another problem, caused by the ugly 47 | * original defintion of the font constants in "classic" GLUT: They are defined 48 | * as void* externally, so we move them temporarily out of the way by AN EXTREME 49 | * CPP HACK. 50 | */ 51 | 52 | #define glutStrokeRoman glutStrokeRomanIGNOREME 53 | #define glutStrokeMonoRoman glutStrokeMonoRomanIGNOREME 54 | #define glutBitmap9By15 glutBitmap9By15IGNOREME 55 | #define glutBitmap8By13 glutBitmap8By13IGNOREME 56 | #define glutBitmapTimesRoman10 glutBitmapTimesRoman10IGNOREME 57 | #define glutBitmapTimesRoman24 glutBitmapTimesRoman24IGNOREME 58 | #define glutBitmapHelvetica10 glutBitmapHelvetica10IGNOREME 59 | #define glutBitmapHelvetica12 glutBitmapHelvetica12IGNOREME 60 | #define glutBitmapHelvetica18 glutBitmapHelvetica18IGNOREME 61 | 62 | #include 63 | 64 | #undef glutStrokeRoman 65 | #undef glutStrokeMonoRoman 66 | #undef glutBitmap9By15 67 | #undef glutBitmap8By13 68 | #undef glutBitmapTimesRoman10 69 | #undef glutBitmapTimesRoman24 70 | #undef glutBitmapHelvetica10 71 | #undef glutBitmapHelvetica12 72 | #undef glutBitmapHelvetica18 73 | 74 | #include "freeglut_internal.h" 75 | 76 | #if TARGET_HOST_POSIX_X11 77 | 78 | struct freeglutStrokeFont 79 | { 80 | const char *name ; 81 | int num_chars ; 82 | void *ch ; 83 | float top ; 84 | float bottom ; 85 | }; 86 | 87 | struct freeglutBitmapFont 88 | { 89 | const char *name ; 90 | const int num_chars ; 91 | const int first ; 92 | const void *ch ; 93 | }; 94 | 95 | 96 | struct freeglutStrokeFont glutStrokeRoman ; 97 | struct freeglutStrokeFont glutStrokeMonoRoman ; 98 | 99 | struct freeglutBitmapFont glutBitmap9By15 ; 100 | struct freeglutBitmapFont glutBitmap8By13 ; 101 | struct freeglutBitmapFont glutBitmapTimesRoman10 ; 102 | struct freeglutBitmapFont glutBitmapTimesRoman24 ; 103 | struct freeglutBitmapFont glutBitmapHelvetica10 ; 104 | struct freeglutBitmapFont glutBitmapHelvetica12 ; 105 | struct freeglutBitmapFont glutBitmapHelvetica18 ; 106 | 107 | #endif 108 | 109 | -------------------------------------------------------------------------------- /src/freeglut/freeglut_misc.c: -------------------------------------------------------------------------------- 1 | /* 2 | * freeglut_misc.c 3 | * 4 | * Functions that didn't fit anywhere else... 5 | * 6 | * Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved. 7 | * Written by Pawel W. Olszta, 8 | * Creation date: Thu Dec 9 1999 9 | * 10 | * Permission is hereby granted, free of charge, to any person obtaining a 11 | * copy of this software and associated documentation files (the "Software"), 12 | * to deal in the Software without restriction, including without limitation 13 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, 14 | * and/or sell copies of the Software, and to permit persons to whom the 15 | * Software is furnished to do so, subject to the following conditions: 16 | * 17 | * The above copyright notice and this permission notice shall be included 18 | * in all copies or substantial portions of the Software. 19 | * 20 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 21 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 23 | * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 24 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 25 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 26 | */ 27 | 28 | #include 29 | #include "freeglut_internal.h" 30 | 31 | /* 32 | * TODO BEFORE THE STABLE RELEASE: 33 | * 34 | * glutSetColor() -- 35 | * glutGetColor() -- 36 | * glutCopyColormap() -- 37 | * glutSetKeyRepeat() -- this is evil and should be removed from API 38 | */ 39 | 40 | /* -- INTERFACE FUNCTIONS -------------------------------------------------- */ 41 | 42 | /* 43 | * This functions checks if an OpenGL extension is supported or not 44 | * 45 | * XXX Wouldn't this be simpler and clearer if we used strtok()? 46 | */ 47 | int FGAPIENTRY glutExtensionSupported( const char* extension ) 48 | { 49 | const char *extensions, *start; 50 | const size_t len = strlen( extension ); 51 | 52 | /* Make sure there is a current window, and thus a current context available */ 53 | FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutExtensionSupported" ); 54 | freeglut_return_val_if_fail( fgStructure.CurrentWindow != NULL, 0 ); 55 | 56 | if (strchr(extension, ' ')) 57 | return 0; 58 | start = extensions = (const char *) glGetString(GL_EXTENSIONS); 59 | 60 | /* XXX consider printing a warning to stderr that there's no current 61 | * rendering context. 62 | */ 63 | freeglut_return_val_if_fail( extensions != NULL, 0 ); 64 | 65 | while (1) { 66 | const char *p = strstr(extensions, extension); 67 | if (!p) 68 | return 0; /* not found */ 69 | /* check that the match isn't a super string */ 70 | if ((p == start || p[-1] == ' ') && (p[len] == ' ' || p[len] == 0)) 71 | return 1; 72 | /* skip the false match and continue */ 73 | extensions = p + len; 74 | } 75 | 76 | return 0 ; 77 | } 78 | 79 | #ifndef GL_INVALID_FRAMEBUFFER_OPERATION 80 | #ifdef GL_INVALID_FRAMEBUFFER_OPERATION_EXT 81 | #define GL_INVALID_FRAMEBUFFER_OPERATION GL_INVALID_FRAMEBUFFER_OPERATION_EXT 82 | #else 83 | #define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 84 | #endif 85 | #endif 86 | 87 | #ifndef GL_TABLE_TOO_LARGE 88 | #ifdef GL_TABLE_TOO_LARGE_EXT 89 | #define GL_TABLE_TOO_LARGE GL_TABLE_TOO_LARGE_EXT 90 | #else 91 | #define GL_TABLE_TOO_LARGE 0x8031 92 | #endif 93 | #endif 94 | 95 | #ifndef GL_TEXTURE_TOO_LARGE 96 | #ifdef GL_TEXTURE_TOO_LARGE_EXT 97 | #define GL_TEXTURE_TOO_LARGE GL_TEXTURE_TOO_LARGE_EXT 98 | #else 99 | #define GL_TEXTURE_TOO_LARGE 0x8065 100 | #endif 101 | #endif 102 | 103 | /* 104 | * A cut-down local version of gluErrorString to avoid depending on GLU. 105 | */ 106 | static const char* fghErrorString( GLenum error ) 107 | { 108 | switch ( error ) { 109 | case GL_INVALID_ENUM: return "invalid enumerant"; 110 | case GL_INVALID_VALUE: return "invalid value"; 111 | case GL_INVALID_OPERATION: return "invalid operation"; 112 | case GL_STACK_OVERFLOW: return "stack overflow"; 113 | case GL_STACK_UNDERFLOW: return "stack underflow"; 114 | case GL_OUT_OF_MEMORY: return "out of memory"; 115 | case GL_TABLE_TOO_LARGE: return "table too large"; 116 | case GL_INVALID_FRAMEBUFFER_OPERATION: return "invalid framebuffer operation"; 117 | case GL_TEXTURE_TOO_LARGE: return "texture too large"; 118 | default: return "unknown GL error"; 119 | } 120 | } 121 | 122 | /* 123 | * This function reports all the OpenGL errors that happened till now 124 | */ 125 | void FGAPIENTRY glutReportErrors( void ) 126 | { 127 | GLenum error; 128 | FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutReportErrors" ); 129 | while( ( error = glGetError() ) != GL_NO_ERROR ) 130 | fgWarning( "GL error: %s", fghErrorString( error ) ); 131 | } 132 | 133 | /* 134 | * Control the auto-repeat of keystrokes to the current window 135 | */ 136 | void FGAPIENTRY glutIgnoreKeyRepeat( int ignore ) 137 | { 138 | FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutIgnoreKeyRepeat" ); 139 | FREEGLUT_EXIT_IF_NO_WINDOW ( "glutIgnoreKeyRepeat" ); 140 | 141 | fgStructure.CurrentWindow->State.IgnoreKeyRepeat = ignore ? GL_TRUE : GL_FALSE; 142 | } 143 | 144 | /* 145 | * Set global auto-repeat of keystrokes 146 | * 147 | * RepeatMode should be either: 148 | * GLUT_KEY_REPEAT_OFF 149 | * GLUT_KEY_REPEAT_ON 150 | * GLUT_KEY_REPEAT_DEFAULT 151 | */ 152 | void FGAPIENTRY glutSetKeyRepeat( int repeatMode ) 153 | { 154 | FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutSetKeyRepeat" ); 155 | 156 | switch( repeatMode ) 157 | { 158 | case GLUT_KEY_REPEAT_OFF: 159 | case GLUT_KEY_REPEAT_ON: 160 | fgState.KeyRepeat = repeatMode; 161 | break; 162 | 163 | case GLUT_KEY_REPEAT_DEFAULT: 164 | fgState.KeyRepeat = GLUT_KEY_REPEAT_ON; 165 | break; 166 | 167 | default: 168 | fgError ("Invalid glutSetKeyRepeat mode: %d", repeatMode); 169 | break; 170 | } 171 | } 172 | 173 | /* 174 | * Forces the joystick callback to be executed 175 | */ 176 | void FGAPIENTRY glutForceJoystickFunc( void ) 177 | { 178 | FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutForceJoystickFunc" ); 179 | #if !defined(_WIN32_WCE) 180 | freeglut_return_if_fail( fgStructure.CurrentWindow != NULL ); 181 | freeglut_return_if_fail( FETCH_WCB( *( fgStructure.CurrentWindow ), Joystick ) ); 182 | fgJoystickPollWindow( fgStructure.CurrentWindow ); 183 | #endif /* !defined(_WIN32_WCE) */ 184 | } 185 | 186 | /* 187 | * 188 | */ 189 | void FGAPIENTRY glutSetColor( int nColor, GLfloat red, GLfloat green, GLfloat blue ) 190 | { 191 | FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutSetColor" ); 192 | /* We really need to do something here. */ 193 | } 194 | 195 | /* 196 | * 197 | */ 198 | GLfloat FGAPIENTRY glutGetColor( int color, int component ) 199 | { 200 | FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutGetColor" ); 201 | /* We really need to do something here. */ 202 | return( 0.0f ); 203 | } 204 | 205 | /* 206 | * 207 | */ 208 | void FGAPIENTRY glutCopyColormap( int window ) 209 | { 210 | FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutCopyColormap" ); 211 | /* We really need to do something here. */ 212 | } 213 | 214 | /*** END OF FILE ***/ 215 | -------------------------------------------------------------------------------- /src/freeglut/freeglut_overlay.c: -------------------------------------------------------------------------------- 1 | /* 2 | * freeglut_overlay.c 3 | * 4 | * Overlay management functions (as defined by GLUT API) 5 | * 6 | * Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved. 7 | * Written by Pawel W. Olszta, 8 | * Creation date: Thu Dec 16 1999 9 | * 10 | * Permission is hereby granted, free of charge, to any person obtaining a 11 | * copy of this software and associated documentation files (the "Software"), 12 | * to deal in the Software without restriction, including without limitation 13 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, 14 | * and/or sell copies of the Software, and to permit persons to whom the 15 | * Software is furnished to do so, subject to the following conditions: 16 | * 17 | * The above copyright notice and this permission notice shall be included 18 | * in all copies or substantial portions of the Software. 19 | * 20 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 21 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 23 | * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 24 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 25 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 26 | */ 27 | 28 | #include 29 | #include "freeglut_internal.h" 30 | 31 | /* 32 | * NOTE: functions declared in this file probably will not be implemented. 33 | */ 34 | 35 | /* -- INTERFACE FUNCTIONS -------------------------------------------------- */ 36 | 37 | void FGAPIENTRY glutEstablishOverlay( void ) { /* Not implemented */ } 38 | void FGAPIENTRY glutRemoveOverlay( void ) { /* Not implemented */ } 39 | void FGAPIENTRY glutUseLayer( GLenum layer ) { /* Not implemented */ } 40 | void FGAPIENTRY glutPostOverlayRedisplay( void ) { /* Not implemented */ } 41 | void FGAPIENTRY glutPostWindowOverlayRedisplay( int ID ) { /* Not implemented */ } 42 | void FGAPIENTRY glutShowOverlay( void ) { /* Not implemented */ } 43 | void FGAPIENTRY glutHideOverlay( void ) { /* Not implemented */ } 44 | 45 | /*** END OF FILE ***/ 46 | -------------------------------------------------------------------------------- /src/freeglut/freeglut_teapot.c: -------------------------------------------------------------------------------- 1 | /* 2 | * freeglut_teapot.c 3 | * 4 | * Teapot(tm) rendering code. 5 | * 6 | * Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved. 7 | * Written by Pawel W. Olszta, 8 | * Creation date: Fri Dec 24 1999 9 | * 10 | * Permission is hereby granted, free of charge, to any person obtaining a 11 | * copy of this software and associated documentation files (the "Software"), 12 | * to deal in the Software without restriction, including without limitation 13 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, 14 | * and/or sell copies of the Software, and to permit persons to whom the 15 | * Software is furnished to do so, subject to the following conditions: 16 | * 17 | * The above copyright notice and this permission notice shall be included 18 | * in all copies or substantial portions of the Software. 19 | * 20 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 21 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 23 | * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 24 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 25 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 26 | */ 27 | 28 | /* 29 | * Original teapot code copyright follows: 30 | */ 31 | 32 | /* 33 | * (c) Copyright 1993, Silicon Graphics, Inc. 34 | * 35 | * ALL RIGHTS RESERVED 36 | * 37 | * Permission to use, copy, modify, and distribute this software 38 | * for any purpose and without fee is hereby granted, provided 39 | * that the above copyright notice appear in all copies and that 40 | * both the copyright notice and this permission notice appear in 41 | * supporting documentation, and that the name of Silicon 42 | * Graphics, Inc. not be used in advertising or publicity 43 | * pertaining to distribution of the software without specific, 44 | * written prior permission. 45 | * 46 | * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU 47 | * "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR 48 | * OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF 49 | * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO 50 | * EVENT SHALL SILICON GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE 51 | * ELSE FOR ANY DIRECT, SPECIAL, INCIDENTAL, INDIRECT OR 52 | * CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER, 53 | * INCLUDING WITHOUT LIMITATION, LOSS OF PROFIT, LOSS OF USE, 54 | * SAVINGS OR REVENUE, OR THE CLAIMS OF THIRD PARTIES, WHETHER OR 55 | * NOT SILICON GRAPHICS, INC. HAS BEEN ADVISED OF THE POSSIBILITY 56 | * OF SUCH LOSS, HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 57 | * ARISING OUT OF OR IN CONNECTION WITH THE POSSESSION, USE OR 58 | * PERFORMANCE OF THIS SOFTWARE. 59 | * 60 | * US Government Users Restricted Rights 61 | * 62 | * Use, duplication, or disclosure by the Government is subject to 63 | * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph 64 | * (c)(1)(ii) of the Rights in Technical Data and Computer 65 | * Software clause at DFARS 252.227-7013 and/or in similar or 66 | * successor clauses in the FAR or the DOD or NASA FAR 67 | * Supplement. Unpublished-- rights reserved under the copyright 68 | * laws of the United States. Contractor/manufacturer is Silicon 69 | * Graphics, Inc., 2011 N. Shoreline Blvd., Mountain View, CA 70 | * 94039-7311. 71 | * 72 | * OpenGL(TM) is a trademark of Silicon Graphics, Inc. 73 | */ 74 | 75 | #include 76 | #include "freeglut_internal.h" 77 | #include "freeglut_teapot_data.h" 78 | 79 | /* -- PRIVATE FUNCTIONS ---------------------------------------------------- */ 80 | 81 | 82 | static void fghTeapot( GLint grid, GLdouble scale, GLenum type ) 83 | { 84 | #if defined(_WIN32_WCE) 85 | int i, numV=sizeof(strip_vertices)/4, numI=sizeof(strip_normals)/4; 86 | #else 87 | double p[4][4][3], q[4][4][3], r[4][4][3], s[4][4][3]; 88 | long i, j, k, l; 89 | #endif 90 | 91 | glPushAttrib( GL_ENABLE_BIT | GL_EVAL_BIT ); 92 | glEnable( GL_AUTO_NORMAL ); 93 | glEnable( GL_NORMALIZE ); 94 | glEnable( GL_MAP2_VERTEX_3 ); 95 | glEnable( GL_MAP2_TEXTURE_COORD_2 ); 96 | 97 | glPushMatrix(); 98 | glRotated( 270.0, 1.0, 0.0, 0.0 ); 99 | glScaled( 0.5 * scale, 0.5 * scale, 0.5 * scale ); 100 | glTranslated( 0.0, 0.0, -1.5 ); 101 | 102 | #if defined(_WIN32_WCE) 103 | glRotated( 90.0, 1.0, 0.0, 0.0 ); 104 | glBegin( GL_TRIANGLE_STRIP ); 105 | 106 | for( i = 0; i < numV-1; i++ ) 107 | { 108 | int vidx = strip_vertices[i], 109 | nidx = strip_normals[i]; 110 | 111 | if( vidx != -1 ) 112 | { 113 | glNormal3fv( normals[nidx] ); 114 | glVertex3fv( vertices[vidx] ); 115 | } 116 | else 117 | { 118 | glEnd(); 119 | glBegin( GL_TRIANGLE_STRIP ); 120 | } 121 | } 122 | 123 | glEnd(); 124 | #else 125 | for (i = 0; i < 10; i++) { 126 | for (j = 0; j < 4; j++) { 127 | for (k = 0; k < 4; k++) { 128 | for (l = 0; l < 3; l++) { 129 | p[j][k][l] = cpdata[patchdata[i][j * 4 + k]][l]; 130 | q[j][k][l] = cpdata[patchdata[i][j * 4 + (3 - k)]][l]; 131 | if (l == 1) 132 | q[j][k][l] *= -1.0; 133 | if (i < 6) { 134 | r[j][k][l] = 135 | cpdata[patchdata[i][j * 4 + (3 - k)]][l]; 136 | if (l == 0) 137 | r[j][k][l] *= -1.0; 138 | s[j][k][l] = cpdata[patchdata[i][j * 4 + k]][l]; 139 | if (l == 0) 140 | s[j][k][l] *= -1.0; 141 | if (l == 1) 142 | s[j][k][l] *= -1.0; 143 | } 144 | } 145 | } 146 | } 147 | 148 | glMap2d(GL_MAP2_TEXTURE_COORD_2, 0.0, 1.0, 2, 2, 0.0, 1.0, 4, 2, 149 | &tex[0][0][0]); 150 | glMap2d(GL_MAP2_VERTEX_3, 0.0, 1.0, 3, 4, 0.0, 1.0, 12, 4, 151 | &p[0][0][0]); 152 | glMapGrid2d(grid, 0.0, 1.0, grid, 0.0, 1.0); 153 | glEvalMesh2(type, 0, grid, 0, grid); 154 | glMap2d(GL_MAP2_VERTEX_3, 0.0, 1.0, 3, 4, 0.0, 1.0, 12, 4, 155 | &q[0][0][0]); 156 | glEvalMesh2(type, 0, grid, 0, grid); 157 | if (i < 6) { 158 | glMap2d(GL_MAP2_VERTEX_3, 0.0, 1.0, 3, 4, 0.0, 1.0, 12, 4, 159 | &r[0][0][0]); 160 | glEvalMesh2(type, 0, grid, 0, grid); 161 | glMap2d(GL_MAP2_VERTEX_3, 0.0, 1.0, 3, 4, 0.0, 1.0, 12, 4, 162 | &s[0][0][0]); 163 | glEvalMesh2(type, 0, grid, 0, grid); 164 | } 165 | } 166 | #endif /* defined(_WIN32_WCE) */ 167 | 168 | glPopMatrix(); 169 | glPopAttrib(); 170 | } 171 | 172 | 173 | /* -- INTERFACE FUNCTIONS -------------------------------------------------- */ 174 | 175 | /* 176 | * Renders a beautiful wired teapot... 177 | */ 178 | void FGAPIENTRY glutWireTeapot( GLdouble size ) 179 | { 180 | FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutWireTeapot" ); 181 | /* We will use the general teapot rendering code */ 182 | fghTeapot( 10, size, GL_LINE ); 183 | } 184 | 185 | /* 186 | * Renders a beautiful filled teapot... 187 | */ 188 | void FGAPIENTRY glutSolidTeapot( GLdouble size ) 189 | { 190 | FREEGLUT_EXIT_IF_NOT_INITIALISED ( "glutSolidTeapot" ); 191 | /* We will use the general teapot rendering code */ 192 | fghTeapot( 7, size, GL_FILL ); 193 | } 194 | 195 | /*** END OF FILE ***/ 196 | 197 | 198 | 199 | 200 | 201 | -------------------------------------------------------------------------------- /src/freeglut/freeglut_videoresize.c: -------------------------------------------------------------------------------- 1 | /* 2 | * freeglut_videoresize.c 3 | * 4 | * Video resize functions (as defined by GLUT API) 5 | * 6 | * Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved. 7 | * Written by Pawel W. Olszta, 8 | * Creation date: Thu Dec 16 1999 9 | * 10 | * Permission is hereby granted, free of charge, to any person obtaining a 11 | * copy of this software and associated documentation files (the "Software"), 12 | * to deal in the Software without restriction, including without limitation 13 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, 14 | * and/or sell copies of the Software, and to permit persons to whom the 15 | * Software is furnished to do so, subject to the following conditions: 16 | * 17 | * The above copyright notice and this permission notice shall be included 18 | * in all copies or substantial portions of the Software. 19 | * 20 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 21 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 23 | * PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 24 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 25 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 26 | */ 27 | 28 | #include 29 | #include "freeglut_internal.h" 30 | 31 | /* 32 | * NOTE: functions declared in this file probably will not be implemented. 33 | */ 34 | 35 | /* -- INTERFACE FUNCTIONS -------------------------------------------------- */ 36 | 37 | int FGAPIENTRY glutVideoResizeGet( GLenum eWhat ) { return( 0x00 ); } 38 | void FGAPIENTRY glutSetupVideoResizing( void ) { /* Not implemented */ } 39 | void FGAPIENTRY glutStopVideoResizing( void ) { /* Not implemented */ } 40 | void FGAPIENTRY glutVideoResize( int x, int y, int w, int h ) { /* Not implemented */ } 41 | void FGAPIENTRY glutVideoPan( int x, int y, int w, int h ) { /* Not implemented */ } 42 | 43 | /*** END OF FILE ***/ 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /src/freeglut/freeglut_xinput.c: -------------------------------------------------------------------------------- 1 | /* Written for XI1 by Nikolas Doerfler (c) 2008 * 2 | * Rewritten for XI2 by Florian Echtler (c) 2009 */ 3 | 4 | #include 5 | 6 | #include "freeglut_internal.h" 7 | 8 | #if TARGET_HOST_POSIX_X11 && HAVE_X11_EXTENSIONS_XINPUT2_H 9 | 10 | #include 11 | #include 12 | 13 | #include 14 | #include 15 | 16 | /* import function from freeglut_main.c */ 17 | int fghGetXModifiers( int state ); 18 | 19 | /* extension opcode for XInput */ 20 | int xi_opcode = -1; 21 | 22 | /** 23 | * \brief Sets window up for XI2 events. 24 | */ 25 | void fgRegisterDevices( Display* dpy, Window* win ) { 26 | 27 | XIEventMask mask; 28 | unsigned char flags[2] = { 0, 0 }; 29 | int event, error; 30 | 31 | /*Display* dpy = fgDisplay.Display; 32 | Window* win = glutGetXWindow();*/ 33 | 34 | /* get XInput extension opcode */ 35 | if (!XQueryExtension( dpy, "XInputExtension", &xi_opcode, &event, &error )) { xi_opcode = -1; } 36 | 37 | /* Select for motion events */ 38 | mask.deviceid = XIAllMasterDevices; 39 | mask.mask_len = 2; 40 | mask.mask = flags; 41 | 42 | XISetMask(mask.mask, XI_Enter); 43 | XISetMask(mask.mask, XI_Motion); 44 | XISetMask(mask.mask, XI_ButtonPress); 45 | XISetMask(mask.mask, XI_ButtonRelease); 46 | XISetMask(mask.mask, XI_Leave); 47 | /*XISetMask(mask.mask, XI_KeyPress); 48 | XISetMask(mask.mask, XI_KeyRelease); 49 | XISetMask(mask.mask, XI_DeviceChanged); 50 | XISetMask(mask.mask, XI_RawEvent); 51 | XISetMask(mask.mask, XI_FocusIn); 52 | XISetMask(mask.mask, XI_FocusOut); 53 | XISetMask(mask.mask, XI_HierarchyChanged);*/ 54 | 55 | XISelectEvents( dpy, *win, &mask, 1 ); 56 | } 57 | 58 | 59 | void fgPrintXILeaveEvent(XILeaveEvent* event) 60 | { 61 | char* mode = ""; 62 | char* detail = ""; 63 | int i; 64 | 65 | printf(" windows: root 0x%lx event 0x%lx child 0x%ld\n", 66 | event->root, event->event, event->child); 67 | switch(event->mode) 68 | { 69 | case NotifyNormal: mode = "NotifyNormal"; break; 70 | case NotifyGrab: mode = "NotifyGrab"; break; 71 | case NotifyUngrab: mode = "NotifyUngrab"; break; 72 | case NotifyWhileGrabbed: mode = "NotifyWhileGrabbed"; break; 73 | } 74 | switch (event->detail) 75 | { 76 | case NotifyAncestor: detail = "NotifyAncestor"; break; 77 | case NotifyVirtual: detail = "NotifyVirtual"; break; 78 | case NotifyInferior: detail = "NotifyInferior"; break; 79 | case NotifyNonlinear: detail = "NotifyNonlinear"; break; 80 | case NotifyNonlinearVirtual: detail = "NotifyNonlinearVirtual"; break; 81 | case NotifyPointer: detail = "NotifyPointer"; break; 82 | case NotifyPointerRoot: detail = "NotifyPointerRoot"; break; 83 | case NotifyDetailNone: detail = "NotifyDetailNone"; break; 84 | } 85 | printf(" mode: %s (detail %s)\n", mode, detail); 86 | printf(" flags: %s %s\n", event->focus ? "[focus]" : "", 87 | event->same_screen ? "[same screen]" : ""); 88 | printf(" buttons:"); 89 | for (i = 0; i < event->buttons.mask_len * 8; i++) 90 | if (XIMaskIsSet(event->buttons.mask, i)) 91 | printf(" %d", i); 92 | printf("\n"); 93 | 94 | printf(" modifiers: locked 0x%x latched 0x%x base 0x%x\n", 95 | event->mods.locked, event->mods.latched, 96 | event->mods.base); 97 | printf(" group: locked 0x%x latched 0x%x base 0x%x\n", 98 | event->group.locked, event->group.latched, 99 | event->group.base); 100 | 101 | printf(" root x/y: %.2f / %.2f\n", event->root_x, event->root_y); 102 | printf(" event x/y: %.2f / %.2f\n", event->event_x, event->event_y); 103 | 104 | } 105 | 106 | 107 | void fgPrintXIDeviceEvent(XIDeviceEvent* event) 108 | { 109 | double *val; 110 | int i; 111 | 112 | printf(" device: %d (%d)\n", event->deviceid, event->sourceid); 113 | printf(" detail: %d\n", event->detail); 114 | printf(" buttons:"); 115 | for (i = 0; i < event->buttons.mask_len * 8; i++) 116 | if (XIMaskIsSet(event->buttons.mask, i)) 117 | printf(" %d", i); 118 | printf("\n"); 119 | 120 | printf(" modifiers: locked 0x%x latched 0x%x base 0x%x\n", 121 | event->mods.locked, event->mods.latched, 122 | event->mods.base); 123 | printf(" group: locked 0x%x latched 0x%x base 0x%x\n", 124 | event->group.locked, event->group.latched, 125 | event->group.base); 126 | printf(" valuators:"); 127 | 128 | val = event->valuators.values; 129 | for (i = 0; i < event->valuators.mask_len * 8; i++) 130 | if (XIMaskIsSet(event->valuators.mask, i)) 131 | printf(" %d: %.2f", i, *val++); 132 | printf("\n"); 133 | 134 | printf(" windows: root 0x%lx event 0x%lx child 0x%ld\n", 135 | event->root, event->event, event->child); 136 | printf(" root x/y: %.2f / %.2f\n", event->root_x, event->root_y); 137 | printf(" event x/y: %.2f / %.2f\n", event->event_x, event->event_y); 138 | 139 | } 140 | 141 | 142 | /** 143 | * \brief This function is called when an Extension Event is received 144 | * and calls the corresponding callback functions for these events. 145 | */ 146 | void fgHandleExtensionEvents( XEvent* base_ev ) { 147 | 148 | int i, button = 0; 149 | XGenericEventCookie* cookie = (XGenericEventCookie*)&(base_ev->xcookie); 150 | 151 | if ( XGetEventData( fgDisplay.Display, cookie ) && (cookie->type == GenericEvent) && (cookie->extension == xi_opcode) ) { 152 | 153 | XIDeviceEvent* event = (XIDeviceEvent*)(cookie->data); 154 | /*printf("XI2 event type: %d - %d\n", cookie->evtype, event->type );*/ 155 | 156 | SFG_Window* window = fgWindowByHandle( event->event ); 157 | if (!window) return; 158 | 159 | switch (cookie->evtype) { 160 | 161 | case XI_Enter: 162 | case XI_Leave: 163 | fgState.Modifiers = fghGetXModifiers( ((XIEnterEvent*)event)->mods.base ); 164 | INVOKE_WCB( *window, MultiEntry, ( 165 | event->deviceid, 166 | (event->evtype == XI_Enter ? GLUT_ENTERED : GLUT_LEFT) 167 | )); 168 | #if _DEBUG 169 | fgPrintXILeaveEvent((XILeaveEvent*)event); 170 | #endif 171 | break; 172 | 173 | case XI_ButtonPress: 174 | case XI_ButtonRelease: 175 | fgState.Modifiers = fghGetXModifiers( event->mods.base ); 176 | INVOKE_WCB( *window, MultiButton, ( 177 | event->deviceid, 178 | event->event_x, 179 | event->event_y, 180 | (event->detail)-1, 181 | (event->evtype == XI_ButtonPress ? GLUT_DOWN : GLUT_UP) 182 | )); 183 | INVOKE_WCB( *window, Mouse, ( 184 | (event->detail)-1, 185 | (event->evtype == XI_ButtonPress ? GLUT_DOWN : GLUT_UP), 186 | event->event_x, 187 | event->event_y 188 | )); 189 | break; 190 | 191 | case XI_Motion: 192 | fgState.Modifiers = fghGetXModifiers( event->mods.base ); 193 | for (i = 0; i < event->buttons.mask_len; i++) if (event->buttons.mask[i]) button = 1; 194 | if (button) { 195 | INVOKE_WCB( *window, MultiMotion, ( event->deviceid, event->event_x, event->event_y ) ); 196 | INVOKE_WCB( *window, Motion, ( event->event_x, event->event_y ) ); 197 | } else { 198 | INVOKE_WCB( *window, MultiPassive, ( event->deviceid, event->event_x, event->event_y ) ); 199 | INVOKE_WCB( *window, Passive, ( event->event_x, event->event_y ) ); 200 | } 201 | #if _DEBUG 202 | fgPrintXIDeviceEvent(event); 203 | #endif 204 | break; 205 | 206 | default: 207 | #if _DEBUG 208 | fgWarning( "Unknown XI2 device event:" ); 209 | fgPrintXIDeviceEvent( event ); 210 | #endif 211 | break; 212 | } 213 | fgState.Modifiers = INVALID_MODIFIERS; 214 | } 215 | XFreeEventData( fgDisplay.Display, cookie ); 216 | } 217 | 218 | #endif 219 | 220 | -------------------------------------------------------------------------------- /src/freeglut/templates/cpp_template: -------------------------------------------------------------------------------- 1 | INVALID TEMPLATE, MOVED TO XFREE86-STYLE LICENSE 2 | 3 | /* 4 | * |FILENAME| 5 | * 6 | * Here comes the file's contents description. 7 | * 8 | * Copyright (c) |YEAR| by |AUTHOR| 9 | * Written by |AUTHOR|, <|EMAIL|> 10 | * Creation date: |DATE| 11 | * 12 | * This program is free software; you can redistribute it and/or modify 13 | * it under the terms of the GNU General Public License as published by 14 | * the Free Software Foundation; either version 2 of the License, or 15 | * (at your option) any later version. 16 | */ 17 | 18 | -------------------------------------------------------------------------------- /src/freeglut/templates/header_template: -------------------------------------------------------------------------------- 1 | INVALID TEMPLATE, MOVED TO XFREE86-STYLE LICENSE 2 | 3 | /* 4 | * |FILENAME| 5 | * 6 | * Here comes the file's contents description. 7 | * 8 | * Copyright (c) |YEAR| by |AUTHOR| 9 | * Written by |AUTHOR|, <|EMAIL|> 10 | * Creation date: |DATE| 11 | * 12 | * This program is free software; you can redistribute it and/or modify 13 | * it under the terms of the GNU General Public License as published by 14 | * the Free Software Foundation; either version 2 of the License, or 15 | * (at your option) any later version. 16 | */ 17 | 18 | -------------------------------------------------------------------------------- /src/main.cpp: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////// 2 | // \file main.cpp 3 | // \author Jonathan Dupuy (onrendering@gmail.com) 4 | // \brief main function 5 | // 6 | /////////////////////////////////////////////////////////////////////// 7 | 8 | 9 | // -------------------------------------------------------------------- 10 | // Includes 11 | #include "callbacks.hpp" 12 | 13 | 14 | // -------------------------------------------------------------------- 15 | // Main 16 | int main(int argc, char **argv) { 17 | // variables 18 | WindowParams windowParams; 19 | GLint windowId; 20 | 21 | // set core funcs 22 | set_window_params(windowParams); 23 | 24 | // init glut 25 | glutInit(&argc, argv); 26 | 27 | // create a dummy window 28 | LOG("Creating dummy window..."); 29 | glutInitContextVersion(1,5); 30 | glutInitWindowPosition(0, 0); 31 | glutInitWindowSize(1, 1); 32 | windowId = glutCreateWindow("dummy"); 33 | 34 | // check platform capabilities 35 | if(gl3wInit()) { 36 | LOG("Failed to load OpenGL functions."); 37 | return EXIT_FAILURE; 38 | } 39 | 40 | LOG("Platform information:"); 41 | LOG("GL_VENDOR " << glGetString(GL_VENDOR)); 42 | LOG("GL_RENDERER " << glGetString(GL_RENDERER)); 43 | LOG("GL_VERSION " << glGetString(GL_VERSION)); 44 | LOG("GL_SHADING_LANGUAGE_VERSION " << glGetString(GL_SHADING_LANGUAGE_VERSION)); 45 | if(!gl3wIsSupported(windowParams.major, windowParams.minor)) { 46 | LOG("This platform does not support the requested OpenGL context"); 47 | return EXIT_FAILURE; 48 | } 49 | // destroy dummy window and create requested context 50 | glutDestroyWindow(windowId); 51 | LOG("Creating requested window..."); 52 | glutInitContextVersion(windowParams.major,windowParams.minor); 53 | glutInitContextProfile(GLUT_CORE_PROFILE); 54 | #ifdef NDEBUG 55 | glutInitContextFlags(GLUT_FORWARD_COMPATIBLE); 56 | #else 57 | glutInitContextFlags(GLUT_DEBUG | GLUT_FORWARD_COMPATIBLE); 58 | #endif 59 | glutInitDisplayMode(windowParams.glutDisplayMode); 60 | glutInitWindowSize(windowParams.width, windowParams.height); 61 | glutInitWindowPosition(-1, -1); 62 | windowId = glutCreateWindow("OpenGL"); 63 | gl3wInit(); 64 | 65 | // set callbacks 66 | glutCloseFunc(&on_exit); 67 | glutReshapeFunc(&on_resize); 68 | glutDisplayFunc(&on_display); 69 | glutKeyboardFunc(&on_keypress); 70 | glutKeyboardUpFunc(&on_keyrelease); 71 | glutMouseFunc(&on_mousebutton); 72 | glutMotionFunc(&on_mousemotion); 73 | glutPassiveMotionFunc(&on_mousepassivemotion); 74 | glutMouseWheelFunc(&on_mousewheel); 75 | 76 | // run 77 | LOG("Initializing resources..."); 78 | on_init(argc, argv); 79 | LOG("Running..."); 80 | glutMainLoop(); 81 | } 82 | 83 | 84 | -------------------------------------------------------------------------------- /src/math/Affine.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "Transform.hpp" 4 | 5 | //////////////////////////////////////////////////////////////////////////////// 6 | // static data 7 | const Affine Affine::IDENTITY(Matrix3x3::Diagonal(1,1,1), 8 | Vector3(0,0,0), 9 | 1.0f); 10 | 11 | 12 | 13 | //////////////////////////////////////////////////////////////////////////////// 14 | // Factories 15 | Affine Affine::Translation(const Vector3& translation) 16 | { 17 | return Affine(Matrix3x3::Diagonal(1,1,1), 18 | translation, 19 | 1.0f); 20 | } 21 | 22 | 23 | //////////////////////////////////////////////////////////////////////////////// 24 | // Constructor 25 | Affine::Affine(): 26 | mUnitAxis(Matrix3x3::Diagonal(1,1,1)), 27 | mPosition(Vector3(0,0,0)), 28 | mScale(1.f), 29 | mIsRS(true) 30 | { 31 | } 32 | 33 | 34 | //////////////////////////////////////////////////////////////////////////////// 35 | // Explicit constructor 36 | Affine::Affine(const Matrix3x3& unitAxis, 37 | const Vector3& position, 38 | float scale) : 39 | mUnitAxis(unitAxis), 40 | mPosition(position), 41 | mScale(scale), 42 | mIsRS(position == Vector3::ZERO) 43 | { 44 | if(position != Vector3::ZERO) 45 | mIsRS = false; 46 | } 47 | 48 | 49 | //////////////////////////////////////////////////////////////////////////////// 50 | // Comparison operators 51 | bool Affine::operator==(const Affine& affine) const 52 | { return !((*this) != affine); } 53 | 54 | bool Affine::operator!=(const Affine& affine) const 55 | { 56 | return ( mUnitAxis != affine.mUnitAxis 57 | || mPosition != affine.mPosition 58 | || mScale != affine.mScale); 59 | } 60 | 61 | 62 | //////////////////////////////////////////////////////////////////////////////// 63 | // Translate 64 | void Affine::TranslateWorld(const Vector3& direction) 65 | { 66 | mPosition+= direction; 67 | mIsRS = mPosition == Vector3::ZERO; 68 | } 69 | 70 | void Affine::TranslateLocal(const Vector3& direction) 71 | { 72 | TranslateWorld(mUnitAxis * direction); 73 | } 74 | 75 | 76 | //////////////////////////////////////////////////////////////////////////////// 77 | // RotateWorld 78 | void Affine::RotateAboutWorldX(float radians) 79 | { mUnitAxis = Matrix3x3::RotationAboutX(radians) * mUnitAxis; normalizeAxis(); } 80 | 81 | void Affine::RotateAboutWorldY(float radians) 82 | { mUnitAxis = Matrix3x3::RotationAboutY(radians) * mUnitAxis; normalizeAxis(); } 83 | 84 | void Affine::RotateAboutWorldZ(float radians) 85 | { mUnitAxis = Matrix3x3::RotationAboutZ(radians) * mUnitAxis; normalizeAxis(); } 86 | 87 | 88 | //////////////////////////////////////////////////////////////////////////////// 89 | // RotateLocal 90 | void Affine::RotateAboutLocalX(float radians) 91 | { mUnitAxis *= Matrix3x3::RotationAboutX(radians); 92 | normalizeAxis(); } 93 | 94 | void Affine::RotateAboutLocalY(float radians) 95 | { mUnitAxis *= Matrix3x3::RotationAboutY(radians); 96 | normalizeAxis(); } 97 | 98 | void Affine::RotateAboutLocalZ(float radians) 99 | { mUnitAxis *= Matrix3x3::RotationAboutZ(radians); 100 | normalizeAxis(); } 101 | 102 | 103 | //////////////////////////////////////////////////////////////////////////////// 104 | // Look at 105 | void Affine::LookAt(const Vector3& targetPos, 106 | const Vector3& unitUp) 107 | { 108 | mUnitAxis = Matrix3x3::LookAtRotation(mPosition, targetPos, unitUp); 109 | } 110 | 111 | 112 | //////////////////////////////////////////////////////////////////////////////// 113 | // Reset 114 | void Affine::MakeDefaultAxis() 115 | { 116 | mUnitAxis = Matrix3x3::Diagonal(1,1,1); 117 | } 118 | 119 | void Affine::MakeZeroPosition() 120 | { 121 | mIsRS = true; 122 | mPosition = Vector3(0.0f, 0.0f, 0.0f); 123 | } 124 | 125 | void Affine::MakeUnitScale() 126 | { 127 | mScale = 1.0f; 128 | } 129 | 130 | 131 | //////////////////////////////////////////////////////////////////////////////// 132 | // Matrix extraction 133 | Matrix4x4 Affine::ExtractTransformMatrix() const 134 | { 135 | return Matrix4x4(mUnitAxis[0][0]*mScale, 136 | mUnitAxis[1][0]*mScale, 137 | mUnitAxis[2][0]*mScale, 138 | mPosition[0], 139 | mUnitAxis[0][1]*mScale, 140 | mUnitAxis[1][1]*mScale, 141 | mUnitAxis[2][1]*mScale, 142 | mPosition[1], 143 | mUnitAxis[0][2]*mScale, 144 | mUnitAxis[1][2]*mScale, 145 | mUnitAxis[2][2]*mScale, 146 | mPosition[2], 147 | 0.0f, 0.0f, 0.0f, 1.0f); 148 | } 149 | 150 | Matrix4x4 Affine::ExtractInverseTransformMatrix() const 151 | { 152 | if(mIsRS) 153 | { 154 | // return transpose only 155 | float invScale = 1.0f / mScale; 156 | return Matrix4x4(mUnitAxis[0][0]*invScale, 157 | mUnitAxis[0][1], 158 | mUnitAxis[0][2], 159 | 0.0f, 160 | mUnitAxis[1][0], 161 | mUnitAxis[1][1]*invScale, 162 | mUnitAxis[1][2], 163 | 0.0f, 164 | mUnitAxis[2][0], 165 | mUnitAxis[2][1], 166 | mUnitAxis[2][2]*invScale, 167 | 0.0f, 168 | 0.0f , 0.0f, 0.0f, 1.0f); 169 | } 170 | else 171 | { 172 | // compute full inverse 173 | return ExtractTransformMatrix().Inverse(); 174 | } 175 | } 176 | 177 | 178 | //////////////////////////////////////////////////////////////////////////////// 179 | // Axis queries 180 | const Vector3& Affine::UnitXAxis() const { return mUnitAxis[0]; } 181 | const Vector3& Affine::UnitYAxis() const { return mUnitAxis[1]; } 182 | const Vector3& Affine::UnitZAxis() const { return mUnitAxis[2]; } 183 | 184 | 185 | //////////////////////////////////////////////////////////////////////////////// 186 | // Accessors 187 | const Matrix3x3& Affine::GetUnitAxis() const { return mUnitAxis; } 188 | const Vector3& Affine::GetPosition() const { return mPosition; } 189 | float Affine::GetScale() const { return mScale; } 190 | 191 | 192 | //////////////////////////////////////////////////////////////////////////////// 193 | // Mutators 194 | void Affine::SetPosition(const Vector3& position) 195 | { 196 | mPosition = position; 197 | mIsRS = mPosition == Vector3::ZERO; 198 | } 199 | 200 | void Affine::SetScale(float nonZeroScale) 201 | { 202 | #ifndef NDEBUG 203 | assert(nonZeroScale != 0.0f); 204 | #endif 205 | mScale = nonZeroScale; 206 | } 207 | 208 | 209 | //////////////////////////////////////////////////////////////////////////////// 210 | // Normalize Axis 211 | void Affine::normalizeAxis() 212 | { 213 | mUnitAxis[0] = mUnitAxis[0].Normalize(); 214 | mUnitAxis[1] = mUnitAxis[1].Normalize(); 215 | mUnitAxis[2] = mUnitAxis[2].Normalize(); 216 | } 217 | 218 | 219 | -------------------------------------------------------------------------------- /src/math/Projection.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include "Transform.hpp" 5 | 6 | 7 | //////////////////////////////////////////////////////////////////////////////// 8 | // Perspective factory 9 | Projection Projection::Perspective(float fovy, 10 | float aspect, 11 | float near, 12 | float far) 13 | { 14 | #ifndef NDEBUG 15 | assert( fovy > 0.0f 16 | && aspect > 0.0f 17 | && near < far 18 | && near > 0.0f); 19 | #endif 20 | 21 | // convert to frustum 22 | float halfHeight = std::tan(fovy*0.5f) * near; 23 | float halfWidth = halfHeight * aspect; 24 | 25 | return Frustum(-halfWidth, 26 | halfWidth, 27 | -halfHeight, 28 | halfHeight, 29 | near, 30 | far); 31 | } 32 | 33 | 34 | //////////////////////////////////////////////////////////////////////////////// 35 | // Frustum factory 36 | Projection Projection::Frustum(float left, 37 | float right, 38 | float bottom, 39 | float top, 40 | float near, 41 | float far) 42 | { 43 | #ifndef NDEBUG 44 | assert( left != right 45 | && bottom != top 46 | && near != far 47 | && near > 0.0f 48 | && far > 0.0f); 49 | #endif 50 | 51 | return Projection(left, 52 | right, 53 | bottom, 54 | top, 55 | near, 56 | far, 57 | PROJECTION_TYPE_PERSPECTIVE); 58 | } 59 | 60 | 61 | //////////////////////////////////////////////////////////////////////////////// 62 | // Ortho factory 63 | Projection Projection::Orthographic(float left, 64 | float right, 65 | float bottom, 66 | float top, 67 | float near, 68 | float far) 69 | { 70 | #ifndef NDEBUG 71 | assert( left != right 72 | && bottom != top 73 | && near != far); 74 | #endif 75 | return Projection(left, 76 | right, 77 | bottom, 78 | top, 79 | near, 80 | far, 81 | PROJECTION_TYPE_ORTHOGRAPHIC); 82 | } 83 | 84 | 85 | //////////////////////////////////////////////////////////////////////////////// 86 | // Explicit constructor 87 | Projection::Projection(float left, 88 | float right, 89 | float bottom, 90 | float top, 91 | float near, 92 | float far, 93 | Projection::ProjectionType type): 94 | mLeft(left), 95 | mRight(right), 96 | mBottom(bottom), 97 | mTop(top), 98 | mNear(near), 99 | mFar(far), 100 | mType(type) 101 | { 102 | } 103 | 104 | 105 | //////////////////////////////////////////////////////////////////////////////// 106 | // Extract Matrix 107 | Matrix4x4 Projection::ExtractTransformMatrix() const 108 | { 109 | if(mType == PROJECTION_TYPE_PERSPECTIVE) 110 | return Matrix4x4::Frustum(mLeft, 111 | mRight, 112 | mBottom, 113 | mTop, 114 | mNear, 115 | mFar); 116 | return Matrix4x4::Ortho(mLeft, 117 | mRight, 118 | mBottom, 119 | mTop, 120 | mNear, 121 | mFar); 122 | } 123 | 124 | Matrix4x4 Projection::ExtractInverseTransformMatrix() const 125 | { 126 | return ExtractTransformMatrix().Inverse(); 127 | } 128 | 129 | 130 | //////////////////////////////////////////////////////////////////////////////// 131 | // Queries 132 | float Projection::Width() const 133 | { return std::abs(mRight - mLeft); } 134 | 135 | float Projection::Height() const 136 | { return std::abs(mTop - mBottom); } 137 | 138 | float Projection::Depth() const 139 | { return std::abs(mFar - mNear); } 140 | 141 | float Projection::Aspect() const 142 | { return Width() / Height(); } 143 | 144 | bool Projection::IsPerspective() const 145 | { return (mType == PROJECTION_TYPE_PERSPECTIVE); } 146 | 147 | bool Projection::IsOrthographic() const 148 | { return (mType == PROJECTION_TYPE_ORTHOGRAPHIC); } 149 | 150 | 151 | //////////////////////////////////////////////////////////////////////////////// 152 | // Fit to aspect 153 | void Projection::FitHeightToAspect(float aspect) 154 | { 155 | // compute factor 156 | float factor = Aspect()/aspect; 157 | 158 | mBottom *= factor; 159 | mTop *= factor; 160 | } 161 | 162 | void Projection::FitWidthToAspect(float aspect) 163 | { 164 | // get current aspect 165 | float factor = aspect/Aspect(); 166 | 167 | mLeft *= factor; 168 | mRight *= factor; 169 | } 170 | 171 | 172 | //////////////////////////////////////////////////////////////////////////////// 173 | // Accessors 174 | const float& Projection::GetLeft() const 175 | {return mLeft;} 176 | const float& Projection::GetRight() const 177 | {return mRight;} 178 | const float& Projection::GetBottom() const 179 | {return mBottom;} 180 | const float& Projection::GetTop() const 181 | {return mTop;} 182 | const float& Projection::GetNear() const 183 | {return mNear;} 184 | const float& Projection::GetFar() const 185 | {return mFar;} 186 | Projection::ProjectionType Projection::GetType() const 187 | {return mType;} 188 | 189 | 190 | //////////////////////////////////////////////////////////////////////////////// 191 | // Mutators 192 | void Projection::SetLeft(float left) 193 | { 194 | #ifndef NDEBUG 195 | assert(left != mRight); 196 | #endif 197 | mLeft = left; 198 | } 199 | 200 | void Projection::SetRight(float right) 201 | { 202 | #ifndef NDEBUG 203 | assert(right != mLeft); 204 | #endif 205 | mRight = right; 206 | } 207 | 208 | void Projection::SetBottom(float bottom) 209 | { 210 | #ifndef NDEBUG 211 | assert(bottom != mTop); 212 | #endif 213 | mBottom = bottom; 214 | } 215 | 216 | void Projection::SetTop(float top) 217 | { 218 | #ifndef NDEBUG 219 | assert(mBottom != top); 220 | #endif 221 | mTop = top; 222 | } 223 | 224 | void Projection::SetNear(float near) 225 | { 226 | #ifndef NDEBUG 227 | assert(near != mFar); 228 | if(mType == PROJECTION_TYPE_PERSPECTIVE) 229 | assert(near > 0.0f); 230 | #endif 231 | mNear = near; 232 | } 233 | 234 | void Projection::SetFar(float far) 235 | { 236 | #ifndef NDEBUG 237 | assert(far != mNear); 238 | if(mType == PROJECTION_TYPE_PERSPECTIVE) 239 | assert(far > 0.0f); 240 | #endif 241 | mFar = far; 242 | } 243 | 244 | void Projection::SetType(Projection::ProjectionType type) 245 | { 246 | mType = type; 247 | } 248 | 249 | 250 | 251 | 252 | 253 | -------------------------------------------------------------------------------- /src/math/Vector2.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | #include "Algebra.hpp" 6 | 7 | //////////////////////////////////////////////////////////////////////////////// 8 | // Constants 9 | const Vector2 Vector2::ZERO(0.0f,0.0f); 10 | 11 | 12 | //////////////////////////////////////////////////////////////////////////////// 13 | // Factories 14 | Vector2 Vector2::CompMult(const Vector2& u, 15 | const Vector2& v) 16 | { return Vector2(u[0]*v[0], u[1]*v[1]); } 17 | 18 | Vector2 Vector2::CompDiv(const Vector2& u, 19 | const Vector2& v) 20 | { return Vector2(u[0]/v[0], u[1]/v[1]); } 21 | 22 | Vector2 Vector2::CompPow(const Vector2& base, 23 | const Vector2& exponent) 24 | { return Vector2(std::pow(base[0],exponent[0]), 25 | std::pow(base[1],exponent[1])); } 26 | 27 | Vector2 Vector2::CompMin(const Vector2& u, 28 | const Vector2& v) 29 | { return Vector2(std::min(u[0],v[0]), 30 | std::min(u[1],v[1])); } 31 | 32 | Vector2 Vector2::CompMax(const Vector2& u, 33 | const Vector2& v) 34 | { return Vector2(std::max(u[0],v[0]), 35 | std::max(u[1],v[1])); } 36 | 37 | Vector2 Vector2::CompClamp(const Vector2& v, 38 | const Vector2& min, 39 | const Vector2& max) 40 | { return CompMin(CompMax(v, min), max); } 41 | 42 | 43 | //////////////////////////////////////////////////////////////////////////////// 44 | // Factories (continued) 45 | Vector2 Vector2::Reflect(const Vector2& incident, 46 | const Vector2& unitNormal) 47 | { 48 | return incident - 2.0f*DotProduct(unitNormal, incident)*unitNormal; 49 | } 50 | 51 | Vector2 Vector2::Refract(const Vector2& unitIncident, 52 | const Vector2& unitNormal, 53 | const float& eta) 54 | { 55 | float nDotI = DotProduct(unitIncident, unitNormal); 56 | float k = 1.0f - eta * eta * (1.0f - nDotI * nDotI); 57 | if(k < 0.0f) 58 | return Vector2(0.0f, 0.0f); 59 | else 60 | return eta * unitIncident - (eta * nDotI + std::sqrt(k)) * unitNormal; 61 | } 62 | 63 | 64 | //////////////////////////////////////////////////////////////////////////////// 65 | // Constructor 66 | Vector2::Vector2(const float& x, const float& y) : 67 | mX(x), mY(y) 68 | { 69 | } 70 | 71 | 72 | //////////////////////////////////////////////////////////////////////////////// 73 | // Length 74 | float Vector2::Length() const 75 | { 76 | return std::sqrt(LengthSquared()); 77 | } 78 | 79 | 80 | //////////////////////////////////////////////////////////////////////////////// 81 | // Length Squared 82 | float Vector2::LengthSquared() const 83 | { 84 | return mX*mX + mY*mY; 85 | } 86 | 87 | 88 | //////////////////////////////////////////////////////////////////////////////// 89 | // Normalize 90 | Vector2 Vector2::Normalize() const 91 | { 92 | float invLength = 1.0f/Length(); 93 | return invLength*(*this); 94 | } 95 | 96 | 97 | //////////////////////////////////////////////////////////////////////////////// 98 | // Bracket operators 99 | const float& Vector2::operator[](size_t row) const 100 | { 101 | #ifndef NDEBUG 102 | assert(row < 2); 103 | #endif 104 | return (&mX)[row]; 105 | } 106 | 107 | float& Vector2::operator[](size_t row) 108 | { 109 | return const_cast< float& >((static_cast< const Vector2& >(*this))[row]); 110 | } 111 | 112 | 113 | //////////////////////////////////////////////////////////////////////////////// 114 | // Arithmetic operators 115 | Vector2 Vector2::operator+(const Vector2& v) const 116 | {return Vector2(mX+v.mX, mY+v.mY);} 117 | 118 | Vector2 Vector2::operator-(const Vector2& v) const 119 | {return Vector2(mX-v.mX, mY-v.mY);} 120 | 121 | Vector2 Vector2::operator*(const float& s) const 122 | {return Vector2(mX*s, mY*s);} 123 | 124 | Vector2 Vector2::operator/(const float& s) const 125 | { 126 | #ifndef NDEBUG 127 | assert(s != 0.0f); 128 | #endif 129 | return (1.0f/s) * (*this); 130 | } 131 | 132 | Vector2 Vector2::operator+() const 133 | {return Vector2(+mX, +mY);} 134 | 135 | Vector2 Vector2::operator-() const 136 | {return Vector2(-mX, -mY);} 137 | 138 | //////////////////////////////////////////////////////////////////////////////// 139 | // Assignment operators 140 | Vector2& Vector2::operator+=(const Vector2& v) 141 | {mX+=v.mX; mY+=v.mY; return (*this);} 142 | 143 | Vector2& Vector2::operator-=(const Vector2& v) 144 | {mX-=v.mX; mY-=v.mY; return (*this);} 145 | 146 | Vector2& Vector2::operator*=(const float& s) 147 | {mX*=s; mY*=s; return (*this);} 148 | 149 | Vector2& Vector2::operator/=(const float& s) 150 | { 151 | #ifndef NDEBUG 152 | assert(s != 0.0f); 153 | #endif 154 | float invS = 1.0f/s; 155 | mX *= invS; 156 | mY *= invS; 157 | return (*this); 158 | } 159 | 160 | //////////////////////////////////////////////////////////////////////////////// 161 | // Comparison operators 162 | bool Vector2::operator==(const Vector2& v) const 163 | { return (v.mX == mX && v.mY == mY); } 164 | 165 | bool Vector2::operator!=(const Vector2& v) const 166 | { return !(v == *this); } 167 | 168 | 169 | //////////////////////////////////////////////////////////////////////////////// 170 | // Additionnal operators 171 | Vector2 operator*(const float& s, const Vector2& v) 172 | { 173 | return Vector2(s*v[0], s*v[1]); 174 | } 175 | 176 | 177 | //////////////////////////////////////////////////////////////////////////////// 178 | // Per component queries 179 | Vector2 Vector2::Sign() const 180 | { return Vector2(float((mX > 0) - (mX < 0)), 181 | float((mY > 0) - (mY < 0))); } 182 | 183 | Vector2 Vector2::Abs() const 184 | {return Vector2(std::abs(mX), std::abs(mY));} 185 | 186 | Vector2 Vector2::Sqr() const 187 | {return Vector2(mX*mX, mY*mY);} 188 | 189 | Vector2 Vector2::Sqrt() const 190 | {return Vector2(std::sqrt(mX), std::sqrt(mY));} 191 | 192 | Vector2 Vector2::Exp() const 193 | {return Vector2(std::exp(mX), std::exp(mY));} 194 | 195 | Vector2 Vector2::Log() const 196 | {return Vector2(std::log(mX), std::log(mY));} 197 | 198 | Vector2 Vector2::Log10() const 199 | {return Vector2(std::log10(mX), std::log10(mY));} 200 | 201 | Vector2 Vector2::Ceil() const 202 | {return Vector2(std::ceil(mX), std::ceil(mY));} 203 | 204 | Vector2 Vector2::Floor() const 205 | {return Vector2(std::floor(mX), std::floor(mY));} 206 | 207 | Vector2 Vector2::Frac() const 208 | {return (*this) - Floor();} 209 | 210 | 211 | //////////////////////////////////////////////////////////////////////////////// 212 | // Dot product 213 | float Vector2::DotProduct(const Vector2& u, const Vector2& v) 214 | { 215 | return u[0]*v[0]+u[1]*v[1]; 216 | } 217 | 218 | 219 | #if 0 220 | #include 221 | int main(int argc, char** argv) 222 | { 223 | Vector2 x = Vector2(1,8); 224 | std::cout << x.GetX() << " " << x.GetY() << std::endl; 225 | std::cout << x[0] << " " << x[1] << std::endl; 226 | x[0] += 2; 227 | x[1] = 9 - x[1]; 228 | std::cout << x[0] << " " << x[1] << std::endl; 229 | 230 | Vector2 a(1,0); 231 | a = a.Abs(); 232 | a = a.Exp(); 233 | a = -Vector2(0,1); 234 | Vector2 b(1,0); 235 | b = -Vector2::CompMult(a,b); 236 | std::cout << Vector2::DotProduct(a.Normalize(),b) << std::endl; 237 | std::cout << a.Length() << " " << a.LengthSquared() << std::endl; 238 | } 239 | #endif 240 | 241 | -------------------------------------------------------------------------------- /src/math/Vector4.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | #include "Algebra.hpp" 6 | 7 | //////////////////////////////////////////////////////////////////////////////// 8 | // Constants 9 | const Vector4 Vector4::ZERO(0.0f,0.0f,0.0f,0.0f); 10 | 11 | 12 | //////////////////////////////////////////////////////////////////////////////// 13 | // Factories 14 | Vector4 Vector4::CompMult(const Vector4& u, 15 | const Vector4& v) 16 | { return Vector4(u[0]*v[0], u[1]*v[1], u[2]*v[2], u[3]*v[3]); } 17 | 18 | Vector4 Vector4::CompDiv(const Vector4& u, 19 | const Vector4& v) 20 | { return Vector4(u[0]/v[0], u[1]/v[1], u[2]/v[2], u[3]/v[3]); } 21 | 22 | Vector4 Vector4::CompPow(const Vector4& base, 23 | const Vector4& exponent) 24 | { return Vector4(std::pow(base[0],exponent[0]), 25 | std::pow(base[1],exponent[1]), 26 | std::pow(base[2],exponent[2]), 27 | std::pow(base[3],exponent[3])); } 28 | 29 | Vector4 Vector4::CompMin(const Vector4& u, 30 | const Vector4& v) 31 | { return Vector4(std::min(u[0],v[0]), 32 | std::min(u[1],v[1]), 33 | std::min(u[2],v[2]), 34 | std::min(u[3],v[3])); } 35 | 36 | Vector4 Vector4::CompMax(const Vector4& u, 37 | const Vector4& v) 38 | { return Vector4(std::max(u[0],v[0]), 39 | std::max(u[1],v[1]), 40 | std::max(u[2],v[2]), 41 | std::max(u[3],v[3])); } 42 | 43 | Vector4 Vector4::CompClamp(const Vector4& v, 44 | const Vector4& min, 45 | const Vector4& max) 46 | { return CompMin(CompMax(v, min), max); } 47 | 48 | 49 | //////////////////////////////////////////////////////////////////////////////// 50 | // Constructor 51 | Vector4::Vector4(const float& x, 52 | const float& y, 53 | const float& z, 54 | const float& w) : 55 | mX(x), mY(y), mZ(z), mW(w) 56 | { 57 | } 58 | 59 | 60 | //////////////////////////////////////////////////////////////////////////////// 61 | // Length 62 | float Vector4::Length() const 63 | { 64 | return std::sqrt(LengthSquared()); 65 | } 66 | 67 | 68 | //////////////////////////////////////////////////////////////////////////////// 69 | // Length Squared 70 | float Vector4::LengthSquared() const 71 | { 72 | return mX*mX + mY*mY + mZ*mZ + mW*mW; 73 | } 74 | 75 | 76 | //////////////////////////////////////////////////////////////////////////////// 77 | // Normalize 78 | Vector4 Vector4::Normalize() const 79 | { 80 | float invLength = 1.0f/Length(); 81 | return invLength*(*this); 82 | } 83 | 84 | 85 | //////////////////////////////////////////////////////////////////////////////// 86 | // Bracket operators 87 | const float& Vector4::operator[](size_t row) const 88 | { 89 | #ifndef NDEBUG 90 | assert(row < 4); 91 | #endif 92 | return (&mX)[row]; 93 | } 94 | 95 | float& Vector4::operator[](size_t row) 96 | { 97 | return const_cast< float& >((static_cast< const Vector4& >(*this))[row]); 98 | } 99 | 100 | 101 | //////////////////////////////////////////////////////////////////////////////// 102 | // Arithmetic operators 103 | Vector4 Vector4::operator+(const Vector4& v) const 104 | {return Vector4(mX+v.mX, mY+v.mY, mZ+v.mZ, mW+v.mW);} 105 | 106 | Vector4 Vector4::operator-(const Vector4& v) const 107 | {return Vector4(mX-v.mX, mY-v.mY, mZ-v.mZ, mW-v.mW);} 108 | 109 | Vector4 Vector4::operator*(const float& s) const 110 | {return Vector4(mX*s, mY*s, mZ*s, mW*s);} 111 | 112 | Vector4 Vector4::operator/(const float& s) const 113 | { 114 | #ifndef NDEBUG 115 | assert(s != 0.0f); 116 | #endif 117 | return (1.0f/s) * (*this); 118 | } 119 | 120 | Vector4 Vector4::operator+() const 121 | {return Vector4(+mX, +mY, +mZ, +mW);} 122 | 123 | Vector4 Vector4::operator-() const 124 | {return Vector4(-mX, -mY, -mZ, -mW);} 125 | 126 | //////////////////////////////////////////////////////////////////////////////// 127 | // Assignment operators 128 | Vector4& Vector4::operator+=(const Vector4& v) 129 | {mX+=v.mX; mY+=v.mY; mZ+=v.mZ; mW+=v.mW; return (*this);} 130 | 131 | Vector4& Vector4::operator-=(const Vector4& v) 132 | {mX-=v.mX; mY-=v.mY; mZ-=v.mZ; mW-=v.mW; return (*this);} 133 | 134 | Vector4& Vector4::operator*=(const float& s) 135 | {mX*=s; mY*=s; mZ*=s; mW*=s; return (*this);} 136 | 137 | Vector4& Vector4::operator/=(const float& s) 138 | { 139 | #ifndef NDEBUG 140 | assert(s != 0.0f); 141 | #endif 142 | float invS = 1.0f/s; 143 | mX *= invS; 144 | mY *= invS; 145 | mZ *= invS; 146 | mW *= invS; 147 | return (*this); 148 | } 149 | 150 | //////////////////////////////////////////////////////////////////////////////// 151 | // Comparison operators 152 | bool Vector4::operator==(const Vector4& v) const 153 | { return (v.mX == mX && v.mY == mY && v.mZ == mZ && v.mW == mW); } 154 | 155 | bool Vector4::operator!=(const Vector4& v) const 156 | { return !(v == *this); } 157 | 158 | 159 | //////////////////////////////////////////////////////////////////////////////// 160 | // Additionnal operators 161 | Vector4 operator*(const float& s, const Vector4& v) 162 | { 163 | return Vector4(s*v[0], s*v[1], s*v[2], s*v[3]); 164 | } 165 | 166 | 167 | //////////////////////////////////////////////////////////////////////////////// 168 | // Per component queries 169 | Vector4 Vector4::Sign() const 170 | { return Vector4(float((mX > 0) - (mX < 0)), 171 | float((mY > 0) - (mY < 0)), 172 | float((mZ > 0) - (mZ < 0)), 173 | float((mW > 0) - (mW < 0))); } 174 | 175 | Vector4 Vector4::Abs() const 176 | {return Vector4(std::abs(mX), std::abs(mY), std::abs(mZ), std::abs(mW));} 177 | 178 | Vector4 Vector4::Sqr() const 179 | {return Vector4(mX*mX, mY*mY, mZ*mZ, mW*mW);} 180 | 181 | Vector4 Vector4::Sqrt() const 182 | {return Vector4(std::sqrt(mX), std::sqrt(mY), std::sqrt(mZ), std::sqrt(mW));} 183 | 184 | Vector4 Vector4::Exp() const 185 | {return Vector4(std::exp(mX), std::exp(mY), std::exp(mZ), std::exp(mW));} 186 | 187 | Vector4 Vector4::Log() const 188 | {return Vector4(std::log(mX), std::log(mY), std::log(mZ), std::log(mW));} 189 | 190 | Vector4 Vector4::Log10() const 191 | {return Vector4(std::log10(mX), 192 | std::log10(mY), 193 | std::log10(mZ), 194 | std::log10(mW));} 195 | 196 | Vector4 Vector4::Ceil() const 197 | {return Vector4(std::ceil(mX), std::ceil(mY), std::ceil(mZ), std::ceil(mW));} 198 | 199 | Vector4 Vector4::Floor() const 200 | {return Vector4(std::floor(mX), 201 | std::floor(mY), 202 | std::floor(mZ), 203 | std::floor(mW));} 204 | 205 | Vector4 Vector4::Frac() const 206 | {return (*this) - Floor();} 207 | 208 | 209 | //////////////////////////////////////////////////////////////////////////////// 210 | // Dot product 211 | float Vector4::DotProduct(const Vector4& u, const Vector4& v) 212 | { 213 | return u[0]*v[0]+u[1]*v[1]+u[2]*v[2]+u[3]*v[3]; 214 | } 215 | 216 | 217 | #if 0 218 | #include 219 | int main(int argc, char** argv) 220 | { 221 | Vector4 x = Vector4(1,8,0,8); 222 | std::cout << x.GetX() << " " 223 | << x.GetY() << " " 224 | << x.GetZ() << " " 225 | << x.GetW() << std::endl; 226 | std::cout << x[0] << " " << x[1] << " " << x[2] << " " << x[3] << std::endl; 227 | x[0]+= 4; 228 | x[1] = 9 - x[1]; 229 | x[2] -= x.GetY(); 230 | x[3] = x.GetW()-1; 231 | std::cout << x[0] << " " << x[1] << " " << x[2] << " " << x[3] << std::endl; 232 | 233 | x = Vector4(-98,0,56,-0).Sign(); 234 | std::cout << x[0] << " " << x[1] << " " << x[2] << " " << x[3] << std::endl; 235 | 236 | x = 2.0f*x; 237 | 238 | x /= 2.0f; 239 | std::cout << x[0] << " " << x[1] << " " << x[2] << " " << x[3] << std::endl; 240 | 241 | Vector4 a(1,0,0,1); 242 | a = a.Abs(); 243 | a = a.Exp(); 244 | a = -Vector4(1,0,0,0); 245 | Vector4 b(-1,0,0,0); 246 | b = -Vector4::CompMult(a,b); 247 | std::cout << Vector4::DotProduct(a.Normalize(),b) << std::endl; 248 | std::cout << a.Length() << " " << a.LengthSquared() << std::endl; 249 | } 250 | #endif 251 | 252 | -------------------------------------------------------------------------------- /src/scripts/premake4.lua: -------------------------------------------------------------------------------- 1 | -- --------------------------------------------------------- 2 | solution "OpenGL" 3 | configurations {"debug", "release"} 4 | location ( _OPTIONS["to"] ) 5 | 6 | 7 | -- --------------------------------------------------------- 8 | -- Project 9 | project "DEMOGL" 10 | targetname "DEMOGL" 11 | language "C++" 12 | kind "ConsoleApp" 13 | includedirs {"../anttweakbar", "../gl3w", "../freeglut", "../math"} 14 | files { "../*.cpp" } 15 | files { "../**.c", "../anttweakbar/*.cpp", "../math/*.cpp"} 16 | 17 | -- exclude os specific files 18 | excludes { 19 | "../anttweakbar/TwEventWin.c", 20 | "../anttweakbar/TwEventX11.c" 21 | } 22 | 23 | -- Debug configuration 24 | configuration {"debug"} 25 | targetdir "../../bin/debug" 26 | defines {"DEBUG"} 27 | flags {"Symbols", "ExtraWarnings"} 28 | 29 | -- Release configuration 30 | configuration {"release"} 31 | targetdir "../../bin/release" 32 | defines {"NDEBUG"} 33 | flags {"Optimize"} 34 | 35 | -- unix specific 36 | configuration {"linux"} 37 | links {"X11", "GL", "Xext", "m"} 38 | defines {"_UNIX"} 39 | files {"../anttweakbar/TwEventX11.c"} 40 | 41 | -- macosx specific 42 | configuration "macosx" 43 | defines {"LUA_USE_MACOSX"} 44 | 45 | configuration {"macosx", "gmake"} 46 | buildoptions {"-mmacosx-version-min=10.1"} 47 | linkoptions {"-lstdc++-static", "-mmacosx-version-min=10.1"} 48 | 49 | -- windows specific 50 | configuration "windows" 51 | files {"../anttweakbar/TwEventWin.c"} 52 | 53 | configuration "vs*" 54 | defines {"_CRT_SECURE_NO_WARNINGS"} 55 | 56 | -- cleanup 57 | if _ACTION == "clean" then 58 | os.rmdir("../../bin") 59 | os.rmdir("../../build") 60 | end 61 | 62 | -- 63 | -- Use the --to=path option to control where the project files get generated. I use 64 | -- this to create project files for each supported toolset, each in their own folder, 65 | -- in preparation for deployment. 66 | -- 67 | newoption { 68 | trigger = "to", 69 | value = "path", 70 | description = "Set the output location for the generated files" 71 | } 72 | 73 | -------------------------------------------------------------------------------- /src/scripts/release.lua: -------------------------------------------------------------------------------- 1 | 2 | 3 | local function exec(cmd, ...) 4 | cmd = string.format(cmd, unpack(arg)) 5 | local z = os.execute(cmd .. " > output.log 2> error.log") 6 | os.remove("output.log") 7 | os.remove("error.log") 8 | return z 9 | end 10 | 11 | print("Generating project files...") 12 | 13 | exec("premake4 /to=../../build/vs2005 vs2005") 14 | exec("premake4 /to=../../build/vs2008 vs2008") 15 | exec("premake4 /to=../../build/vs2010 vs2010") 16 | exec("premake4 /to=../../build/gmake.windows /os=windows gmake") 17 | exec("premake4 /to=../../build/gmake.unix /os=linux gmake") 18 | exec("premake4 /to=../../build/gmake.macosx /os=macosx /platform=universal32 gmake") 19 | exec("premake4 /to=../../build/codeblocks.windows /os=windows codeblocks") 20 | exec("premake4 /to=../../build/codeblocks.unix /os=linux codeblocks") 21 | exec("premake4 /to=../../build/codeblocks.macosx /os=macosx /platform=universal32 codeblocks") 22 | exec("premake4 /to=../../build/codelite.windows /os=windows codelite") 23 | exec("premake4 /to=../../build/codelite.unix /os=linux codelite") 24 | exec("premake4 /to=../../build/codelite.macosx /os=macosx /platform=universal32 codelite") 25 | exec("premake4 /to=../../build/xcode3 /platform=universal32 xcode3") 26 | 27 | print("Done.") 28 | 29 | -------------------------------------------------------------------------------- /src/shaders/cornell.glsl: -------------------------------------------------------------------------------- 1 | #version 420 2 | 3 | // -------------------------------------------------- 4 | // Uniforms 5 | // -------------------------------------------------- 6 | uniform samplerCube sSky; 7 | uniform mat4 uModelViewProjection; 8 | uniform mat3 uModelView; 9 | uniform vec3 uEyePos; 10 | uniform vec2 uPlanes; 11 | 12 | 13 | // -------------------------------------------------- 14 | // Vertex shader 15 | // -------------------------------------------------- 16 | #ifdef _VERTEX_ 17 | void main() { 18 | // extract vertices (rockNroll) 19 | int r = int(gl_VertexID > 6); 20 | int i = r==1 ? 13-gl_VertexID : gl_VertexID; 21 | int x = int(i<3 || i==4); 22 | int y = r ^ int(i>0 && i<4); 23 | int z = r ^ int(i<2 || i>5); 24 | // send position 25 | gl_Position.xyz = vec3(x,y,z)*2.0-1.0; 26 | } 27 | #endif 28 | 29 | // -------------------------------------------------- 30 | // Geometry shader 31 | // -------------------------------------------------- 32 | #ifdef _GEOMETRY_ 33 | layout(triangles) in; 34 | layout(triangle_strip, max_vertices=3) out; 35 | layout(location=0) flat out vec3 oNormal; 36 | layout(location=1) out vec3 oTexCoord; 37 | layout(location=2) out vec3 oEyeToPos; 38 | 39 | void main() { 40 | const float BOX_SIZE=200.0; 41 | vec3 p1 = gl_in[0].gl_Position.xyz*BOX_SIZE; 42 | vec3 p2 = gl_in[1].gl_Position.xyz*BOX_SIZE; 43 | vec3 p3 = gl_in[2].gl_Position.xyz*BOX_SIZE; 44 | vec3 e1 = normalize(p2-p1); 45 | vec3 e2 = normalize(p3-p1); 46 | oNormal = uModelView*normalize(cross(e1,e2)); 47 | 48 | oTexCoord = gl_in[0].gl_Position.xyz; 49 | oEyeToPos = uEyePos-p1; 50 | gl_Position = uModelViewProjection * vec4(p1,1); 51 | EmitVertex(); 52 | 53 | oTexCoord = gl_in[1].gl_Position.xyz; 54 | oEyeToPos = uEyePos-p2; 55 | gl_Position = uModelViewProjection * vec4(p2,1); 56 | EmitVertex(); 57 | 58 | oTexCoord = gl_in[2].gl_Position.xyz; 59 | oEyeToPos = uEyePos-p3; 60 | gl_Position = uModelViewProjection * vec4(p3,1); 61 | EmitVertex(); 62 | 63 | EndPrimitive(); 64 | } 65 | #endif 66 | 67 | 68 | // -------------------------------------------------- 69 | // Fragment shader 70 | // -------------------------------------------------- 71 | #ifdef _FRAGMENT_ 72 | layout(location=0) flat in vec3 iNormal; 73 | layout(location=1) in vec3 iTexCoord; 74 | layout(location=2) in vec3 iEyeToPos; 75 | layout(location=0) out vec4 oNd; 76 | layout(location=1) out vec3 oAlbedo; 77 | 78 | void main() { 79 | oAlbedo = texture(sSky, normalize(iTexCoord)).rgb; 80 | oNd.rgb = iNormal*0.5+0.5; 81 | oNd.a = length(iEyeToPos)*uPlanes.x+uPlanes.y; 82 | } 83 | #endif 84 | 85 | 86 | -------------------------------------------------------------------------------- /src/shaders/ssgi.glsl: -------------------------------------------------------------------------------- 1 | #version 420 2 | 3 | #ifndef SAMPLE_CNT 4 | # error SAMPLE_CNT undefined 5 | #endif 6 | #define PI 3.14 7 | 8 | 9 | // -------------------------------------------------- 10 | // Uniforms 11 | // -------------------------------------------------- 12 | uniform sampler2D sNoise; // random vectors 13 | uniform sampler2DRect sNd; // normal + depth 14 | uniform sampler2DRect sKa; // albedo 15 | 16 | uniform vec2 uScreenSize; // screen dimensions 17 | uniform vec2 uClipZ; // clipping planes 18 | uniform vec2 uTanFovs; // tangent of field of views 19 | uniform vec3 uLightPos; // ligh pos in view space 20 | uniform int uSampleCnt; // number of samples 21 | uniform float uRadius; // radius size 22 | uniform float uGiBoost; // gi boost 23 | 24 | layout(std140) 25 | uniform Samples { 26 | vec4 uSamples[SAMPLE_CNT]; // sampling directions 27 | }; 28 | 29 | // -------------------------------------------------- 30 | // Functions 31 | // -------------------------------------------------- 32 | // get the view position of a sample from its depth 33 | // and eye information 34 | vec3 ndc_to_view(vec2 ndc, 35 | float depth, 36 | vec2 clipPlanes, 37 | vec2 tanFov); 38 | vec2 view_to_ndc(vec3 view, 39 | vec2 clipPlanes, 40 | vec2 tanFov); 41 | 42 | 43 | // -------------------------------------------------- 44 | // Vertex shader 45 | // -------------------------------------------------- 46 | #ifdef _VERTEX_ 47 | layout(location=0) out vec2 oTexCoord; 48 | void main() { 49 | oTexCoord = vec2(gl_VertexID & 1, gl_VertexID >> 1 & 1); 50 | gl_Position = vec4(oTexCoord*2.0-1.0,0,1); 51 | } 52 | #endif //_VERTEX_ 53 | 54 | 55 | // -------------------------------------------------- 56 | // Fragment shader 57 | // -------------------------------------------------- 58 | #ifdef _FRAGMENT_ 59 | layout(location=0) in vec2 iTexCoord; 60 | layout(location=0) out vec4 oColour; 61 | void main() { 62 | const float ATTF = 1e-5; // attenuation factor 63 | vec2 st = iTexCoord*uScreenSize; 64 | vec4 t1 = texture(sNd,st); // read normal + depth 65 | vec3 t2 = texture(sKa,st).rgb; // colour 66 | vec3 n = t1.rgb*2.0-1.0; // rebuild normal 67 | vec3 p = ndc_to_view(iTexCoord*2.0-1.0, t1.a, uClipZ, uTanFovs); // get view pos 68 | vec3 l = uLightPos - p; // light vec 69 | float att = 1.0+ATTF*length(l); 70 | float nDotL = max(0.0,dot(normalize(l),n)); 71 | oColour.rgb = t2*nDotL/(att*att); 72 | 73 | #if defined GI_SSAO 74 | float occ = 0.0; 75 | float occCnt = 0.0; 76 | vec3 rvec = normalize(texture(sNoise, gl_FragCoord.xy/64.0).rgb*2.0-1.0); 77 | for(int i=0; i 0.0 ? vec3(1.0-occ*uGiBoost/occCnt) : vec3(1); 94 | #elif defined GI_SSDO 95 | vec3 gi = vec3(0.0); 96 | float giCnt = 0.0; 97 | vec3 rvec = normalize(texture(sNoise, gl_FragCoord.xy/64.0).rgb*2.0-1.0); 98 | for(int i=0; i 0.0 ? t2*gi*nDotL*uGiBoost/giCnt : vec3(0); 122 | #endif // GI_SSAO 123 | } 124 | #endif // _FRAGMENT_ 125 | 126 | 127 | // -------------------------------------------------- 128 | // Functions impl. 129 | // -------------------------------------------------- 130 | vec3 ndc_to_view(vec2 ndc, 131 | float depth, 132 | vec2 clipPlanes, 133 | vec2 tanFov) { 134 | // go from [0,1] to [zNear, zFar] 135 | float z = depth * clipPlanes.x + clipPlanes.y; 136 | // view space position 137 | return vec3(ndc * tanFov, -1) * z; 138 | } 139 | 140 | vec2 view_to_ndc(vec3 view, 141 | vec2 clipPlanes, 142 | vec2 tanFov) { 143 | return -view.xy / (tanFov*view.z); 144 | } 145 | 146 | 147 | 148 | 149 | --------------------------------------------------------------------------------