diff options
Diffstat (limited to 'intern/ghost/test')
-rw-r--r-- | intern/ghost/test/CMakeLists.txt | 218 | ||||
-rw-r--r-- | intern/ghost/test/gears/GHOST_C-Test.c | 849 | ||||
-rw-r--r-- | intern/ghost/test/gears/GHOST_Test.cpp | 1201 | ||||
-rw-r--r-- | intern/ghost/test/multitest/Basic.c | 24 | ||||
-rw-r--r-- | intern/ghost/test/multitest/Basic.h | 20 | ||||
-rw-r--r-- | intern/ghost/test/multitest/EventToBuf.c | 393 | ||||
-rw-r--r-- | intern/ghost/test/multitest/GL.h | 20 | ||||
-rw-r--r-- | intern/ghost/test/multitest/MultiTest.c | 1150 | ||||
-rw-r--r-- | intern/ghost/test/multitest/ScrollBar.c | 94 | ||||
-rw-r--r-- | intern/ghost/test/multitest/ScrollBar.h | 31 | ||||
-rw-r--r-- | intern/ghost/test/multitest/Util.c | 36 | ||||
-rw-r--r-- | intern/ghost/test/multitest/Util.h | 6 | ||||
-rw-r--r-- | intern/ghost/test/multitest/WindowData.c | 16 | ||||
-rw-r--r-- | intern/ghost/test/multitest/WindowData.h | 8 | ||||
-rw-r--r-- | intern/ghost/test/multitest/stubs.c | 9 |
15 files changed, 2036 insertions, 2039 deletions
diff --git a/intern/ghost/test/CMakeLists.txt b/intern/ghost/test/CMakeLists.txt index 9f714ae4fba..a5a41209603 100644 --- a/intern/ghost/test/CMakeLists.txt +++ b/intern/ghost/test/CMakeLists.txt @@ -14,43 +14,43 @@ set(WITH_GUARDEDALLOC ON) # stub macro, does nothing macro(blender_add_lib - name - sources - includes - includes_sys - ) + name + sources + includes + includes_sys + ) endmacro() # suffix relative paths so we can use external cmake files macro(suffix_relpaths - new_files files prefix) - - set(${new_files}) - foreach(_file ${files}) - if(IS_ABSOLUTE _file) - list(APPEND ${new_files} ${_file}) - else() - list(APPEND ${new_files} "${prefix}${_file}") - endif() - endforeach() - unset(_file) + new_files files prefix) + + set(${new_files}) + foreach(_file ${files}) + if(IS_ABSOLUTE _file) + list(APPEND ${new_files} ${_file}) + else() + list(APPEND ${new_files} "${prefix}${_file}") + endif() + endforeach() + unset(_file) endmacro() macro(data_to_c file_from file_to list_to_add) - list(APPEND ${list_to_add} ${file_to}) + list(APPEND ${list_to_add} ${file_to}) - get_filename_component(_file_to_path ${file_to} PATH) + get_filename_component(_file_to_path ${file_to} PATH) - add_custom_command( - OUTPUT ${file_to} - COMMAND ${CMAKE_COMMAND} -E make_directory ${_file_to_path} - COMMAND ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/datatoc ${file_from} ${file_to} - DEPENDS ${file_from} datatoc) - unset(_file_to_path) + add_custom_command( + OUTPUT ${file_to} + COMMAND ${CMAKE_COMMAND} -E make_directory ${_file_to_path} + COMMAND ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/datatoc ${file_from} ${file_to} + DEPENDS ${file_from} datatoc) + unset(_file_to_path) endmacro() # ----------------------------------------------------------------------------- @@ -58,24 +58,24 @@ endmacro() # set the endian define if(MSVC) - # for some reason this fails on msvc - add_definitions(-D__LITTLE_ENDIAN__) + # for some reason this fails on msvc + add_definitions(-D__LITTLE_ENDIAN__) else() - include(TestBigEndian) - test_big_endian(_SYSTEM_BIG_ENDIAN) - if(_SYSTEM_BIG_ENDIAN) - add_definitions(-D__BIG_ENDIAN__) - else() - add_definitions(-D__LITTLE_ENDIAN__) - endif() - unset(_SYSTEM_BIG_ENDIAN) + include(TestBigEndian) + test_big_endian(_SYSTEM_BIG_ENDIAN) + if(_SYSTEM_BIG_ENDIAN) + add_definitions(-D__BIG_ENDIAN__) + else() + add_definitions(-D__LITTLE_ENDIAN__) + endif() + unset(_SYSTEM_BIG_ENDIAN) endif() # ----------------------------------------------------------------------------- # Libraries if(UNIX AND NOT APPLE) - set(WITH_X11 ON) + set(WITH_X11 ON) endif() # for now... default to this add_definitions(-DWITH_GL_PROFILE_COMPAT) @@ -126,27 +126,27 @@ add_library(glewmx_lib ${SRC_NEW}) # grr, blenfont needs BLI include_directories( - "../../../source/blender/blenlib" - ) + "../../../source/blender/blenlib" + ) add_library(bli_lib - "../../../source/blender/blenlib/intern/fileops.c" - "../../../source/blender/blenlib/intern/gsqueue.c" - "../../../source/blender/blenlib/intern/rct.c" - "../../../source/blender/blenlib/intern/string.c" - "../../../source/blender/blenlib/intern/string_utf8.c" - "../../../source/blender/blenlib/intern/listbase.c" - "../../../source/blender/blenlib/intern/math_color.c" - "../../../source/blender/blenlib/intern/storage.c" - "../../../source/blender/blenlib/intern/task.c" - "../../../source/blender/blenlib/intern/threads.c" - "../../../source/blender/blenlib/intern/time.c" - "../../../source/blender/blenlib/intern/path_util.c" - "../../../source/blender/blenlib/intern/BLI_dynstr.c" - "../../../source/blender/blenlib/intern/BLI_linklist.c" - "../../../source/blender/blenlib/intern/BLI_memarena.c" - "../../../source/blender/blenlib/intern/BLI_mempool.c" - "../../../source/blender/blenlib/intern/system.c" - ) + "../../../source/blender/blenlib/intern/fileops.c" + "../../../source/blender/blenlib/intern/gsqueue.c" + "../../../source/blender/blenlib/intern/rct.c" + "../../../source/blender/blenlib/intern/string.c" + "../../../source/blender/blenlib/intern/string_utf8.c" + "../../../source/blender/blenlib/intern/listbase.c" + "../../../source/blender/blenlib/intern/math_color.c" + "../../../source/blender/blenlib/intern/storage.c" + "../../../source/blender/blenlib/intern/task.c" + "../../../source/blender/blenlib/intern/threads.c" + "../../../source/blender/blenlib/intern/time.c" + "../../../source/blender/blenlib/intern/path_util.c" + "../../../source/blender/blenlib/intern/BLI_dynstr.c" + "../../../source/blender/blenlib/intern/BLI_linklist.c" + "../../../source/blender/blenlib/intern/BLI_memarena.c" + "../../../source/blender/blenlib/intern/BLI_mempool.c" + "../../../source/blender/blenlib/intern/system.c" + ) set(PLATFORM_CGLAGS) @@ -162,26 +162,26 @@ include_directories(${FREETYPE_INCLUDE_DIRS}) include_directories(${CMAKE_SOURCE_DIR}/../../../source/blender/blenfont) if(CMAKE_COMPILER_IS_GNUCC) - set(PLATFORM_CFLAGS "-funsigned-char") + set(PLATFORM_CFLAGS "-funsigned-char") endif() if(UNIX AND NOT APPLE) - find_package(X11 REQUIRED) - find_package(GLEW) - - if(NOT GLEW_FOUND) - message(FATAL_ERROR "GLEW is required to build blender, install it or disable WITH_SYSTEM_GLEW") - endif() - - set(PLATFORM_LINKLIBS - ${X11_X11_LIB} - ${X11_Xinput_LIB} - ${GLEW_LIBRARY} - -lpthread - ) + find_package(X11 REQUIRED) + find_package(GLEW) + + if(NOT GLEW_FOUND) + message(FATAL_ERROR "GLEW is required to build blender, install it or disable WITH_SYSTEM_GLEW") + endif() + + set(PLATFORM_LINKLIBS + ${X11_X11_LIB} + ${X11_Xinput_LIB} + ${GLEW_LIBRARY} + -lpthread + ) else() - # set(GLEW_LIBRARY "") # unused - set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew/include") + # set(GLEW_LIBRARY "") # unused + set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew/include") endif() set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${PLATFORM_CFLAGS}") @@ -192,34 +192,34 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PLATFORM_CFLAGS}") # DataToC add_executable(datatoc - ${CMAKE_SOURCE_DIR}/../../../source/blender/datatoc/datatoc.c) + ${CMAKE_SOURCE_DIR}/../../../source/blender/datatoc/datatoc.c) # Gears (C) add_executable(gears_c - ${CMAKE_SOURCE_DIR}/gears/GHOST_C-Test.c) + ${CMAKE_SOURCE_DIR}/gears/GHOST_C-Test.c) target_link_libraries(gears_c - ghost_lib - glewmx_lib - string_lib - ${OPENGL_gl_LIBRARY} - ${CMAKE_DL_LIBS} - ${PLATFORM_LINKLIBS} - ) + ghost_lib + glewmx_lib + string_lib + ${OPENGL_gl_LIBRARY} + ${CMAKE_DL_LIBS} + ${PLATFORM_LINKLIBS} + ) # Gears (C++) add_executable(gears_cpp - ${CMAKE_SOURCE_DIR}/gears/GHOST_Test.cpp) + ${CMAKE_SOURCE_DIR}/gears/GHOST_Test.cpp) target_link_libraries(gears_cpp - ghost_lib - glewmx_lib - string_lib - ${OPENGL_gl_LIBRARY} - ${CMAKE_DL_LIBS} - ${PLATFORM_LINKLIBS} - ) + ghost_lib + glewmx_lib + string_lib + ${OPENGL_gl_LIBRARY} + ${CMAKE_DL_LIBS} + ${PLATFORM_LINKLIBS} + ) # MultiTest (C) @@ -228,28 +228,28 @@ data_to_c(${CMAKE_SOURCE_DIR}/../../../release/datafiles/bfont.ttf ${CMAKE_CURRENT_BINARY_DIR}/bfont.ttf.c data_to_c_files) add_executable(multitest_c - ${CMAKE_SOURCE_DIR}/multitest/Basic.c - ${CMAKE_SOURCE_DIR}/multitest/EventToBuf.c - ${CMAKE_SOURCE_DIR}/multitest/MultiTest.c - ${CMAKE_SOURCE_DIR}/multitest/ScrollBar.c - ${CMAKE_SOURCE_DIR}/multitest/Util.c - ${CMAKE_SOURCE_DIR}/multitest/WindowData.c - ${CMAKE_SOURCE_DIR}/multitest/stubs.c - ${data_to_c_files} + ${CMAKE_SOURCE_DIR}/multitest/Basic.c + ${CMAKE_SOURCE_DIR}/multitest/EventToBuf.c + ${CMAKE_SOURCE_DIR}/multitest/MultiTest.c + ${CMAKE_SOURCE_DIR}/multitest/ScrollBar.c + ${CMAKE_SOURCE_DIR}/multitest/Util.c + ${CMAKE_SOURCE_DIR}/multitest/WindowData.c + ${CMAKE_SOURCE_DIR}/multitest/stubs.c + ${data_to_c_files} ) target_link_libraries(multitest_c - blenfont_lib - bli_lib - ghost_lib - glewmx_lib - string_lib - guardedalloc_lib - wcwidth_lib - ${OPENGL_gl_LIBRARY} - ${FREETYPE_LIBRARY} - ${ZLIB_LIBRARIES} - ${CMAKE_DL_LIBS} - ${PLATFORM_LINKLIBS} - ) + blenfont_lib + bli_lib + ghost_lib + glewmx_lib + string_lib + guardedalloc_lib + wcwidth_lib + ${OPENGL_gl_LIBRARY} + ${FREETYPE_LIBRARY} + ${ZLIB_LIBRARIES} + ${CMAKE_DL_LIBS} + ${PLATFORM_LINKLIBS} + ) diff --git a/intern/ghost/test/gears/GHOST_C-Test.c b/intern/ghost/test/gears/GHOST_C-Test.c index b308ac61e57..80675ac5e3d 100644 --- a/intern/ghost/test/gears/GHOST_C-Test.c +++ b/intern/ghost/test/gears/GHOST_C-Test.c @@ -39,14 +39,13 @@ # include <windows.h> # include <GL/gl.h> # else /* WIN32 */ - /* __APPLE__ is defined */ +/* __APPLE__ is defined */ # include <AGL/gl.h> # endif /* WIN32 */ -#else /* defined(WIN32) || defined(__APPLE__) */ +#else /* defined(WIN32) || defined(__APPLE__) */ # include <GL/gl.h> #endif /* defined(WIN32) || defined(__APPLE__) */ - static void gearsTimerProc(GHOST_TimerTaskHandle task, GHOST_TUns64 time); int processEvent(GHOST_EventHandle hEvent, GHOST_TUserDataPtr userData); @@ -63,472 +62,454 @@ static GHOST_TimerTaskHandle sGearsTimer; static void testTimerProc(GHOST_TimerTaskHandle task, GHOST_TUns64 time) { - printf("timer1, time=%d\n", (int)time); + printf("timer1, time=%d\n", (int)time); } - -static void gearGL(GLfloat inner_radius, GLfloat outer_radius, GLfloat width, GLint teeth, GLfloat tooth_depth) +static void gearGL( + GLfloat inner_radius, GLfloat outer_radius, GLfloat width, GLint teeth, GLfloat tooth_depth) { - GLint i; - GLfloat r0, r1, r2; - GLfloat angle, da; - GLfloat u, v, len; - const double pi = 3.14159264; - - r0 = inner_radius; - r1 = (float)(outer_radius - tooth_depth / 2.0); - r2 = (float)(outer_radius + tooth_depth / 2.0); - - da = (float)(2.0 * pi / teeth / 4.0); - - glShadeModel(GL_FLAT); - glNormal3f(0.0, 0.0, 1.0); - - /* draw front face */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = (float)(i * 2.0 * pi / teeth); - glVertex3f((float)(r0 * cos(angle)), (float)(r0 * sin(angle)), (float)(width * 0.5)); - glVertex3f((float)(r1 * cos(angle)), (float)(r1 * sin(angle)), (float)(width * 0.5)); - glVertex3f((float)(r0 * cos(angle)), (float)(r0 * sin(angle)), (float)(width * 0.5)); - glVertex3f((float)(r1 * cos(angle + 3 * da)), (float)(r1 * sin(angle + 3 * da)), (float)(width * 0.5)); - } - glEnd(); - - /* draw front sides of teeth */ - glBegin(GL_QUADS); - da = (float)(2.0 * pi / teeth / 4.0); - for (i = 0; i < teeth; i++) { - angle = (float)(i * 2.0 * pi / teeth); - glVertex3f((float)(r1 * cos(angle)), (float)(r1 * sin(angle)), (float)(width * 0.5)); - glVertex3f((float)(r2 * cos(angle + da)), (float)(r2 * sin(angle + da)), (float)(width * 0.5)); - glVertex3f((float)(r2 * cos(angle + 2 * da)), (float)(r2 * sin(angle + 2 * da)), (float)(width * 0.5)); - glVertex3f((float)(r1 * cos(angle + 3 * da)), (float)(r1 * sin(angle + 3 * da)), (float)(width * 0.5)); - } - glEnd(); - - glNormal3f(0.0, 0.0, -1.0); - - /* draw back face */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = (float)(i * 2.0 * pi / teeth); - glVertex3f((float)(r1 * cos(angle)), (float)(r1 * sin(angle)), (float)(-width * 0.5)); - glVertex3f((float)(r0 * cos(angle)), (float)(r0 * sin(angle)), (float)(-width * 0.5)); - glVertex3f((float)(r1 * cos(angle + 3 * da)), (float)(r1 * sin(angle + 3 * da)), (float)(-width * 0.5)); - glVertex3f((float)(r0 * cos(angle)), (float)(r0 * sin(angle)), (float)(-width * 0.5)); - } - glEnd(); - - /* draw back sides of teeth */ - glBegin(GL_QUADS); - da = (float)(2.0 * pi / teeth / 4.0); - for (i = 0; i < teeth; i++) { - angle = (float)(i * 2.0 * pi / teeth); - glVertex3f((float)(r1 * cos(angle + 3 * da)), (float)(r1 * sin(angle + 3 * da)), (float)(-width * 0.5)); - glVertex3f((float)(r2 * cos(angle + 2 * da)), (float)(r2 * sin(angle + 2 * da)), (float)(-width * 0.5)); - glVertex3f((float)(r2 * cos(angle + da)), (float)(r2 * sin(angle + da)), (float)(-width * 0.5)); - glVertex3f((float)(r1 * cos(angle)), (float)(r1 * sin(angle)), (float)(-width * 0.5)); - } - glEnd(); - - /* draw outward faces of teeth */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i < teeth; i++) { - angle = (float)(i * 2.0 * pi / teeth); - glVertex3f((float)(r1 * cos(angle)), (float)(r1 * sin(angle)), (float)(width * 0.5)); - glVertex3f((float)(r1 * cos(angle)), (float)(r1 * sin(angle)), (float)(-width * 0.5)); - u = (float)(r2 * cos(angle + da) - r1 * cos(angle)); - v = (float)(r2 * sin(angle + da) - r1 * sin(angle)); - len = (float)(sqrt(u * u + v * v)); - u /= len; - v /= len; - glNormal3f(v, -u, 0.0); - glVertex3f((float)(r2 * cos(angle + da)), (float)(r2 * sin(angle + da)), (float)(width * 0.5)); - glVertex3f((float)(r2 * cos(angle + da)), (float)(r2 * sin(angle + da)), (float)(-width * 0.5)); - glNormal3f((float)(cos(angle)), (float)(sin(angle)), 0.0); - glVertex3f((float)(r2 * cos(angle + 2 * da)), (float)(r2 * sin(angle + 2 * da)), (float)(width * 0.5)); - glVertex3f((float)(r2 * cos(angle + 2 * da)), (float)(r2 * sin(angle + 2 * da)), (float)(-width * 0.5)); - u = (float)(r1 * cos(angle + 3 * da) - r2 * cos(angle + 2 * da)); - v = (float)(r1 * sin(angle + 3 * da) - r2 * sin(angle + 2 * da)); - glNormal3f(v, -u, 0.0); - glVertex3f((float)(r1 * cos(angle + 3 * da)), (float)(r1 * sin(angle + 3 * da)), (float)(width * 0.5)); - glVertex3f((float)(r1 * cos(angle + 3 * da)), (float)(r1 * sin(angle + 3 * da)), (float)(-width * 0.5)); - glNormal3f((float)(cos(angle)), (float)(sin(angle)), 0.0); - } - glVertex3f((float)(r1 * cos(0.0)), (float)(r1 * sin(0.0)), (float)(width * 0.5)); - glVertex3f((float)(r1 * cos(0.0)), (float)(r1 * sin(0.0)), (float)(-width * 0.5)); - glEnd(); - - glShadeModel(GL_SMOOTH); - - /* draw inside radius cylinder */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = (float)(i * 2.0 * pi / teeth); - glNormal3f((float)(-cos(angle)), (float)(-sin(angle)), 0.0); - glVertex3f((float)(r0 * cos(angle)), (float)(r0 * sin(angle)), (float)(-width * 0.5)); - glVertex3f((float)(r0 * cos(angle)), (float)(r0 * sin(angle)), (float)(width * 0.5)); - } - glEnd(); + GLint i; + GLfloat r0, r1, r2; + GLfloat angle, da; + GLfloat u, v, len; + const double pi = 3.14159264; + + r0 = inner_radius; + r1 = (float)(outer_radius - tooth_depth / 2.0); + r2 = (float)(outer_radius + tooth_depth / 2.0); + + da = (float)(2.0 * pi / teeth / 4.0); + + glShadeModel(GL_FLAT); + glNormal3f(0.0, 0.0, 1.0); + + /* draw front face */ + glBegin(GL_QUAD_STRIP); + for (i = 0; i <= teeth; i++) { + angle = (float)(i * 2.0 * pi / teeth); + glVertex3f((float)(r0 * cos(angle)), (float)(r0 * sin(angle)), (float)(width * 0.5)); + glVertex3f((float)(r1 * cos(angle)), (float)(r1 * sin(angle)), (float)(width * 0.5)); + glVertex3f((float)(r0 * cos(angle)), (float)(r0 * sin(angle)), (float)(width * 0.5)); + glVertex3f((float)(r1 * cos(angle + 3 * da)), + (float)(r1 * sin(angle + 3 * da)), + (float)(width * 0.5)); + } + glEnd(); + + /* draw front sides of teeth */ + glBegin(GL_QUADS); + da = (float)(2.0 * pi / teeth / 4.0); + for (i = 0; i < teeth; i++) { + angle = (float)(i * 2.0 * pi / teeth); + glVertex3f((float)(r1 * cos(angle)), (float)(r1 * sin(angle)), (float)(width * 0.5)); + glVertex3f((float)(r2 * cos(angle + da)), (float)(r2 * sin(angle + da)), (float)(width * 0.5)); + glVertex3f((float)(r2 * cos(angle + 2 * da)), + (float)(r2 * sin(angle + 2 * da)), + (float)(width * 0.5)); + glVertex3f((float)(r1 * cos(angle + 3 * da)), + (float)(r1 * sin(angle + 3 * da)), + (float)(width * 0.5)); + } + glEnd(); + + glNormal3f(0.0, 0.0, -1.0); + + /* draw back face */ + glBegin(GL_QUAD_STRIP); + for (i = 0; i <= teeth; i++) { + angle = (float)(i * 2.0 * pi / teeth); + glVertex3f((float)(r1 * cos(angle)), (float)(r1 * sin(angle)), (float)(-width * 0.5)); + glVertex3f((float)(r0 * cos(angle)), (float)(r0 * sin(angle)), (float)(-width * 0.5)); + glVertex3f((float)(r1 * cos(angle + 3 * da)), + (float)(r1 * sin(angle + 3 * da)), + (float)(-width * 0.5)); + glVertex3f((float)(r0 * cos(angle)), (float)(r0 * sin(angle)), (float)(-width * 0.5)); + } + glEnd(); + + /* draw back sides of teeth */ + glBegin(GL_QUADS); + da = (float)(2.0 * pi / teeth / 4.0); + for (i = 0; i < teeth; i++) { + angle = (float)(i * 2.0 * pi / teeth); + glVertex3f((float)(r1 * cos(angle + 3 * da)), + (float)(r1 * sin(angle + 3 * da)), + (float)(-width * 0.5)); + glVertex3f((float)(r2 * cos(angle + 2 * da)), + (float)(r2 * sin(angle + 2 * da)), + (float)(-width * 0.5)); + glVertex3f( + (float)(r2 * cos(angle + da)), (float)(r2 * sin(angle + da)), (float)(-width * 0.5)); + glVertex3f((float)(r1 * cos(angle)), (float)(r1 * sin(angle)), (float)(-width * 0.5)); + } + glEnd(); + + /* draw outward faces of teeth */ + glBegin(GL_QUAD_STRIP); + for (i = 0; i < teeth; i++) { + angle = (float)(i * 2.0 * pi / teeth); + glVertex3f((float)(r1 * cos(angle)), (float)(r1 * sin(angle)), (float)(width * 0.5)); + glVertex3f((float)(r1 * cos(angle)), (float)(r1 * sin(angle)), (float)(-width * 0.5)); + u = (float)(r2 * cos(angle + da) - r1 * cos(angle)); + v = (float)(r2 * sin(angle + da) - r1 * sin(angle)); + len = (float)(sqrt(u * u + v * v)); + u /= len; + v /= len; + glNormal3f(v, -u, 0.0); + glVertex3f((float)(r2 * cos(angle + da)), (float)(r2 * sin(angle + da)), (float)(width * 0.5)); + glVertex3f( + (float)(r2 * cos(angle + da)), (float)(r2 * sin(angle + da)), (float)(-width * 0.5)); + glNormal3f((float)(cos(angle)), (float)(sin(angle)), 0.0); + glVertex3f((float)(r2 * cos(angle + 2 * da)), + (float)(r2 * sin(angle + 2 * da)), + (float)(width * 0.5)); + glVertex3f((float)(r2 * cos(angle + 2 * da)), + (float)(r2 * sin(angle + 2 * da)), + (float)(-width * 0.5)); + u = (float)(r1 * cos(angle + 3 * da) - r2 * cos(angle + 2 * da)); + v = (float)(r1 * sin(angle + 3 * da) - r2 * sin(angle + 2 * da)); + glNormal3f(v, -u, 0.0); + glVertex3f((float)(r1 * cos(angle + 3 * da)), + (float)(r1 * sin(angle + 3 * da)), + (float)(width * 0.5)); + glVertex3f((float)(r1 * cos(angle + 3 * da)), + (float)(r1 * sin(angle + 3 * da)), + (float)(-width * 0.5)); + glNormal3f((float)(cos(angle)), (float)(sin(angle)), 0.0); + } + glVertex3f((float)(r1 * cos(0.0)), (float)(r1 * sin(0.0)), (float)(width * 0.5)); + glVertex3f((float)(r1 * cos(0.0)), (float)(r1 * sin(0.0)), (float)(-width * 0.5)); + glEnd(); + + glShadeModel(GL_SMOOTH); + + /* draw inside radius cylinder */ + glBegin(GL_QUAD_STRIP); + for (i = 0; i <= teeth; i++) { + angle = (float)(i * 2.0 * pi / teeth); + glNormal3f((float)(-cos(angle)), (float)(-sin(angle)), 0.0); + glVertex3f((float)(r0 * cos(angle)), (float)(r0 * sin(angle)), (float)(-width * 0.5)); + glVertex3f((float)(r0 * cos(angle)), (float)(r0 * sin(angle)), (float)(width * 0.5)); + } + glEnd(); } - - static void drawGearGL(int id) { - static GLfloat pos[4] = { 5.0f, 5.0f, 10.0f, 1.0f }; - static GLfloat ared[4] = { 0.8f, 0.1f, 0.0f, 1.0f }; - static GLfloat agreen[4] = { 0.0f, 0.8f, 0.2f, 1.0f }; - static GLfloat ablue[4] = { 0.2f, 0.2f, 1.0f, 1.0f }; - - glLightfv(GL_LIGHT0, GL_POSITION, pos); - glEnable(GL_CULL_FACE); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - - switch (id) - { - case 1: - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ared); - gearGL(1.0f, 4.0f, 1.0f, 20, 0.7f); - break; - case 2: - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, agreen); - gearGL(0.5f, 2.0f, 2.0f, 10, 0.7f); - break; - case 3: - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ablue); - gearGL(1.3f, 2.0f, 0.5f, 10, 0.7f); - break; - default: - break; - } - glEnable(GL_NORMALIZE); + static GLfloat pos[4] = {5.0f, 5.0f, 10.0f, 1.0f}; + static GLfloat ared[4] = {0.8f, 0.1f, 0.0f, 1.0f}; + static GLfloat agreen[4] = {0.0f, 0.8f, 0.2f, 1.0f}; + static GLfloat ablue[4] = {0.2f, 0.2f, 1.0f, 1.0f}; + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glEnable(GL_CULL_FACE); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + + switch (id) { + case 1: + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ared); + gearGL(1.0f, 4.0f, 1.0f, 20, 0.7f); + break; + case 2: + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, agreen); + gearGL(0.5f, 2.0f, 2.0f, 10, 0.7f); + break; + case 3: + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ablue); + gearGL(1.3f, 2.0f, 0.5f, 10, 0.7f); + break; + default: + break; + } + glEnable(GL_NORMALIZE); } - static void drawGL(void) { - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glPushMatrix(); - - glRotatef(view_rotx, 1.0, 0.0, 0.0); - glRotatef(view_roty, 0.0, 1.0, 0.0); - glRotatef(view_rotz, 0.0, 0.0, 1.0); - - glPushMatrix(); - glTranslatef(-3.0, -2.0, 0.0); - glRotatef(fAngle, 0.0, 0.0, 1.0); - drawGearGL(1); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(3.1f, -2.0f, 0.0f); - glRotatef((float)(-2.0 * fAngle - 9.0), 0.0, 0.0, 1.0); - drawGearGL(2); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(-3.1f, 2.2f, -1.8f); - glRotatef(90.0f, 1.0f, 0.0f, 0.0f); - glRotatef((float)(2.0 * fAngle - 2.0), 0.0, 0.0, 1.0); - drawGearGL(3); - glPopMatrix(); - - glPopMatrix(); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glPushMatrix(); + + glRotatef(view_rotx, 1.0, 0.0, 0.0); + glRotatef(view_roty, 0.0, 1.0, 0.0); + glRotatef(view_rotz, 0.0, 0.0, 1.0); + + glPushMatrix(); + glTranslatef(-3.0, -2.0, 0.0); + glRotatef(fAngle, 0.0, 0.0, 1.0); + drawGearGL(1); + glPopMatrix(); + + glPushMatrix(); + glTranslatef(3.1f, -2.0f, 0.0f); + glRotatef((float)(-2.0 * fAngle - 9.0), 0.0, 0.0, 1.0); + drawGearGL(2); + glPopMatrix(); + + glPushMatrix(); + glTranslatef(-3.1f, 2.2f, -1.8f); + glRotatef(90.0f, 1.0f, 0.0f, 0.0f); + glRotatef((float)(2.0 * fAngle - 2.0), 0.0, 0.0, 1.0); + drawGearGL(3); + glPopMatrix(); + + glPopMatrix(); } - static void setViewPortGL(GHOST_WindowHandle hWindow) { - GHOST_RectangleHandle hRect = NULL; - GLfloat w, h; + GHOST_RectangleHandle hRect = NULL; + GLfloat w, h; - GHOST_ActivateWindowDrawingContext(hWindow); - hRect = GHOST_GetClientBounds(hWindow); + GHOST_ActivateWindowDrawingContext(hWindow); + hRect = GHOST_GetClientBounds(hWindow); - w = (float)GHOST_GetWidthRectangle(hRect) / (float)GHOST_GetHeightRectangle(hRect); - h = 1.0; + w = (float)GHOST_GetWidthRectangle(hRect) / (float)GHOST_GetHeightRectangle(hRect); + h = 1.0; - glViewport(0, 0, GHOST_GetWidthRectangle(hRect), GHOST_GetHeightRectangle(hRect)); + glViewport(0, 0, GHOST_GetWidthRectangle(hRect), GHOST_GetHeightRectangle(hRect)); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-w, w, -h, h, 5.0, 60.0); - /* glOrtho(0, bnds.getWidth(), 0, bnds.getHeight(), -10, 10); */ - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -40.0); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-w, w, -h, h, 5.0, 60.0); + /* glOrtho(0, bnds.getWidth(), 0, bnds.getHeight(), -10, 10); */ + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glTranslatef(0.0, 0.0, -40.0); - glClearColor(.2f, 0.0f, 0.0f, 0.0f); - glClear(GL_COLOR_BUFFER_BIT); + glClearColor(.2f, 0.0f, 0.0f, 0.0f); + glClear(GL_COLOR_BUFFER_BIT); - GHOST_DisposeRectangle(hRect); + GHOST_DisposeRectangle(hRect); } - - int processEvent(GHOST_EventHandle hEvent, GHOST_TUserDataPtr userData) { - int handled = 1; - int cursor; - int visibility; - GHOST_TEventKeyData *keyData = NULL; - GHOST_TEventWheelData *wheelData = NULL; - GHOST_DisplaySetting setting; - GHOST_WindowHandle window = GHOST_GetEventWindow(hEvent); - - switch (GHOST_GetEventType(hEvent)) - { + int handled = 1; + int cursor; + int visibility; + GHOST_TEventKeyData *keyData = NULL; + GHOST_TEventWheelData *wheelData = NULL; + GHOST_DisplaySetting setting; + GHOST_WindowHandle window = GHOST_GetEventWindow(hEvent); + + switch (GHOST_GetEventType(hEvent)) { #if 0 - case GHOST_kEventUnknown: - break; - case GHOST_kEventCursorButton: - break; - case GHOST_kEventCursorMove: - break; + case GHOST_kEventUnknown: + break; + case GHOST_kEventCursorButton: + break; + case GHOST_kEventCursorMove: + break; #endif - case GHOST_kEventWheel: - { - wheelData = (GHOST_TEventWheelData *)GHOST_GetEventData(hEvent); - if (wheelData->z > 0) - { - view_rotz += 5.f; - } - else { - view_rotz -= 5.f; - } - } - break; - - case GHOST_kEventKeyUp: - break; - - case GHOST_kEventKeyDown: - { - keyData = (GHOST_TEventKeyData *)GHOST_GetEventData(hEvent); - switch (keyData->key) - { - case GHOST_kKeyC: - { - cursor = sCursor; - cursor++; - if (cursor >= GHOST_kStandardCursorNumCursors) - { - cursor = GHOST_kStandardCursorFirstCursor; - } - sCursor = (GHOST_TStandardCursor)cursor; - GHOST_SetCursorShape(window, sCursor); - } - break; - case GHOST_kKeyF: - if (!GHOST_GetFullScreen(shSystem)) - { - /* Begin fullscreen mode */ - setting.bpp = 24; - setting.frequency = 85; - setting.xPixels = 640; - setting.yPixels = 480; - - /* - * setting.bpp = 16; - * setting.frequency = 75; - * setting.xPixels = 640; - * setting.yPixels = 480; - */ - - sFullScreenWindow = GHOST_BeginFullScreen(shSystem, &setting, - - FALSE /* stereo flag */); - } - else { - GHOST_EndFullScreen(shSystem); - sFullScreenWindow = 0; - } - break; - case GHOST_kKeyH: - { - visibility = GHOST_GetCursorVisibility(window); - GHOST_SetCursorVisibility(window, !visibility); - } - break; - case GHOST_kKeyQ: - if (GHOST_GetFullScreen(shSystem)) - { - GHOST_EndFullScreen(shSystem); - sFullScreenWindow = 0; - } - sExitRequested = 1; - case GHOST_kKeyT: - if (!sTestTimer) - { - sTestTimer = GHOST_InstallTimer(shSystem, 0, 1000, testTimerProc, NULL); - } - else { - GHOST_RemoveTimer(shSystem, sTestTimer); - sTestTimer = 0; - } - break; - case GHOST_kKeyW: - { - if (sMainWindow) - { - char *title = GHOST_GetTitle(sMainWindow); - char *ntitle = malloc(strlen(title) + 2); - - sprintf(ntitle, "%s-", title); - GHOST_SetTitle(sMainWindow, ntitle); - - free(ntitle); - free(title); - } - } - break; - default: - break; - } - } - break; - - case GHOST_kEventWindowClose: - { - GHOST_WindowHandle window2 = GHOST_GetEventWindow(hEvent); - if (window2 == sMainWindow) - { - sExitRequested = 1; - } - else { - if (sGearsTimer) - { - GHOST_RemoveTimer(shSystem, sGearsTimer); - sGearsTimer = 0; - } - GHOST_DisposeWindow(shSystem, window2); - } - } - break; - - case GHOST_kEventWindowActivate: - handled = 0; - break; - case GHOST_kEventWindowDeactivate: - handled = 0; - break; - case GHOST_kEventWindowUpdate: - { - GHOST_WindowHandle window2 = GHOST_GetEventWindow(hEvent); - if (!GHOST_ValidWindow(shSystem, window2)) - break; - setViewPortGL(window2); - drawGL(); - GHOST_SwapWindowBuffers(window2); - } - break; - - default: - handled = 0; - break; - } - return handled; + case GHOST_kEventWheel: { + wheelData = (GHOST_TEventWheelData *)GHOST_GetEventData(hEvent); + if (wheelData->z > 0) { + view_rotz += 5.f; + } + else { + view_rotz -= 5.f; + } + } break; + + case GHOST_kEventKeyUp: + break; + + case GHOST_kEventKeyDown: { + keyData = (GHOST_TEventKeyData *)GHOST_GetEventData(hEvent); + switch (keyData->key) { + case GHOST_kKeyC: { + cursor = sCursor; + cursor++; + if (cursor >= GHOST_kStandardCursorNumCursors) { + cursor = GHOST_kStandardCursorFirstCursor; + } + sCursor = (GHOST_TStandardCursor)cursor; + GHOST_SetCursorShape(window, sCursor); + } break; + case GHOST_kKeyF: + if (!GHOST_GetFullScreen(shSystem)) { + /* Begin fullscreen mode */ + setting.bpp = 24; + setting.frequency = 85; + setting.xPixels = 640; + setting.yPixels = 480; + + /* + * setting.bpp = 16; + * setting.frequency = 75; + * setting.xPixels = 640; + * setting.yPixels = 480; + */ + + sFullScreenWindow = GHOST_BeginFullScreen(shSystem, + &setting, + + FALSE /* stereo flag */); + } + else { + GHOST_EndFullScreen(shSystem); + sFullScreenWindow = 0; + } + break; + case GHOST_kKeyH: { + visibility = GHOST_GetCursorVisibility(window); + GHOST_SetCursorVisibility(window, !visibility); + } break; + case GHOST_kKeyQ: + if (GHOST_GetFullScreen(shSystem)) { + GHOST_EndFullScreen(shSystem); + sFullScreenWindow = 0; + } + sExitRequested = 1; + case GHOST_kKeyT: + if (!sTestTimer) { + sTestTimer = GHOST_InstallTimer(shSystem, 0, 1000, testTimerProc, NULL); + } + else { + GHOST_RemoveTimer(shSystem, sTestTimer); + sTestTimer = 0; + } + break; + case GHOST_kKeyW: { + if (sMainWindow) { + char *title = GHOST_GetTitle(sMainWindow); + char *ntitle = malloc(strlen(title) + 2); + + sprintf(ntitle, "%s-", title); + GHOST_SetTitle(sMainWindow, ntitle); + + free(ntitle); + free(title); + } + } break; + default: + break; + } + } break; + + case GHOST_kEventWindowClose: { + GHOST_WindowHandle window2 = GHOST_GetEventWindow(hEvent); + if (window2 == sMainWindow) { + sExitRequested = 1; + } + else { + if (sGearsTimer) { + GHOST_RemoveTimer(shSystem, sGearsTimer); + sGearsTimer = 0; + } + GHOST_DisposeWindow(shSystem, window2); + } + } break; + + case GHOST_kEventWindowActivate: + handled = 0; + break; + case GHOST_kEventWindowDeactivate: + handled = 0; + break; + case GHOST_kEventWindowUpdate: { + GHOST_WindowHandle window2 = GHOST_GetEventWindow(hEvent); + if (!GHOST_ValidWindow(shSystem, window2)) + break; + setViewPortGL(window2); + drawGL(); + GHOST_SwapWindowBuffers(window2); + } break; + + default: + handled = 0; + break; + } + return handled; } - int main(int argc, char **argv) { - GHOST_GLSettings glSettings = {0}; - char *title1 = "gears - main window"; - char *title2 = "gears - secondary window"; - GHOST_EventConsumerHandle consumer = GHOST_CreateEventConsumer(processEvent, NULL); - - /* Create the system */ - shSystem = GHOST_CreateSystem(); - GHOST_AddEventConsumer(shSystem, consumer); - - if (shSystem) - { - /* Create the main window */ - sMainWindow = GHOST_CreateWindow( - shSystem, title1, - 10, 64, 320, 200, - GHOST_kWindowStateNormal, - GHOST_kDrawingContextTypeOpenGL, - glSettings); - if (!sMainWindow) - { - printf("could not create main window\n"); - exit(-1); - } - - /* Create a secondary window */ - sSecondaryWindow = GHOST_CreateWindow( - shSystem, - title2, - 340, 64, 320, 200, - GHOST_kWindowStateNormal, - GHOST_kDrawingContextTypeOpenGL, - glSettings); - if (!sSecondaryWindow) - { - printf("could not create secondary window\n"); - exit(-1); - } - - /* Install a timer to have the gears running */ - sGearsTimer = GHOST_InstallTimer(shSystem, - 0, - 10, - gearsTimerProc, - sMainWindow); - - /* Enter main loop */ - while (!sExitRequested) - { - if (!GHOST_ProcessEvents(shSystem, 0)) - { + GHOST_GLSettings glSettings = {0}; + char *title1 = "gears - main window"; + char *title2 = "gears - secondary window"; + GHOST_EventConsumerHandle consumer = GHOST_CreateEventConsumer(processEvent, NULL); + + /* Create the system */ + shSystem = GHOST_CreateSystem(); + GHOST_AddEventConsumer(shSystem, consumer); + + if (shSystem) { + /* Create the main window */ + sMainWindow = GHOST_CreateWindow(shSystem, + title1, + 10, + 64, + 320, + 200, + GHOST_kWindowStateNormal, + GHOST_kDrawingContextTypeOpenGL, + glSettings); + if (!sMainWindow) { + printf("could not create main window\n"); + exit(-1); + } + + /* Create a secondary window */ + sSecondaryWindow = GHOST_CreateWindow(shSystem, + title2, + 340, + 64, + 320, + 200, + GHOST_kWindowStateNormal, + GHOST_kDrawingContextTypeOpenGL, + glSettings); + if (!sSecondaryWindow) { + printf("could not create secondary window\n"); + exit(-1); + } + + /* Install a timer to have the gears running */ + sGearsTimer = GHOST_InstallTimer(shSystem, 0, 10, gearsTimerProc, sMainWindow); + + /* Enter main loop */ + while (!sExitRequested) { + if (!GHOST_ProcessEvents(shSystem, 0)) { #ifdef WIN32 - /* If there were no events, be nice to other applications */ - Sleep(10); + /* If there were no events, be nice to other applications */ + Sleep(10); #endif - } - GHOST_DispatchEvents(shSystem); - } - } - - /* Dispose windows */ - if (GHOST_ValidWindow(shSystem, sMainWindow)) - { - GHOST_DisposeWindow(shSystem, sMainWindow); - } - if (GHOST_ValidWindow(shSystem, sSecondaryWindow)) - { - GHOST_DisposeWindow(shSystem, sSecondaryWindow); - } - - /* Dispose the system */ - GHOST_DisposeSystem(shSystem); - - return 0; + } + GHOST_DispatchEvents(shSystem); + } + } + + /* Dispose windows */ + if (GHOST_ValidWindow(shSystem, sMainWindow)) { + GHOST_DisposeWindow(shSystem, sMainWindow); + } + if (GHOST_ValidWindow(shSystem, sSecondaryWindow)) { + GHOST_DisposeWindow(shSystem, sSecondaryWindow); + } + + /* Dispose the system */ + GHOST_DisposeSystem(shSystem); + + return 0; } - static void gearsTimerProc(GHOST_TimerTaskHandle hTask, GHOST_TUns64 time) { - GHOST_WindowHandle hWindow = NULL; - fAngle += 2.0; - view_roty += 1.0; - hWindow = (GHOST_WindowHandle)GHOST_GetTimerTaskUserData(hTask); - if (GHOST_GetFullScreen(shSystem)) - { - /* Running full screen */ - GHOST_InvalidateWindow(sFullScreenWindow); - } - else { - if (GHOST_ValidWindow(shSystem, hWindow)) - { - GHOST_InvalidateWindow(hWindow); - } - } + GHOST_WindowHandle hWindow = NULL; + fAngle += 2.0; + view_roty += 1.0; + hWindow = (GHOST_WindowHandle)GHOST_GetTimerTaskUserData(hTask); + if (GHOST_GetFullScreen(shSystem)) { + /* Running full screen */ + GHOST_InvalidateWindow(sFullScreenWindow); + } + else { + if (GHOST_ValidWindow(shSystem, hWindow)) { + GHOST_InvalidateWindow(hWindow); + } + } } diff --git a/intern/ghost/test/gears/GHOST_Test.cpp b/intern/ghost/test/gears/GHOST_Test.cpp index 23564faf38d..76386fb114a 100644 --- a/intern/ghost/test/gears/GHOST_Test.cpp +++ b/intern/ghost/test/gears/GHOST_Test.cpp @@ -34,13 +34,13 @@ # include <atlbase.h> # include <GL/gl.h> -# else // WIN32 - // __APPLE__ is defined +# else // WIN32 \ + // __APPLE__ is defined # include <AGL/gl.h> -# endif // WIN32 -#else // defined(WIN32) || defined(__APPLE__) +# endif // WIN32 +#else // defined(WIN32) || defined(__APPLE__) # include <GL/gl.h> -#endif // defined(WIN32) || defined(__APPLE__) +#endif // defined(WIN32) || defined(__APPLE__) #include "STR_String.h" #include "GHOST_Rect.h" @@ -49,290 +49,302 @@ #include "GHOST_IEvent.h" #include "GHOST_IEventConsumer.h" - -#define LEFT_EYE 0 +#define LEFT_EYE 0 #define RIGHT_EYE 1 static bool nVidiaWindows; // very dirty but hey, it's for testing only static void gearsTimerProc(GHOST_ITimerTask *task, GHOST_TUns64 time); -static class Application * fApp; +static class Application *fApp; static GLfloat view_rotx = 20.0, view_roty = 30.0, view_rotz = 0.0; static GLfloat fAngle = 0.0; static GHOST_ISystem *fSystem = 0; - -void StereoProjection(float left, float right, float bottom, float top, float nearplane, float farplane, - float zero_plane, float dist, +void StereoProjection(float left, + float right, + float bottom, + float top, + float nearplane, + float farplane, + float zero_plane, + float dist, float eye); - static void testTimerProc(GHOST_ITimerTask * /*task*/, GHOST_TUns64 time) { - std::cout << "timer1, time=" << (int)time << "\n"; + std::cout << "timer1, time=" << (int)time << "\n"; } - -static void gearGL(GLfloat inner_radius, GLfloat outer_radius, GLfloat width, GLint teeth, GLfloat tooth_depth) +static void gearGL( + GLfloat inner_radius, GLfloat outer_radius, GLfloat width, GLint teeth, GLfloat tooth_depth) { - GLint i; - GLfloat r0, r1, r2; - GLfloat angle, da; - GLfloat u, v, len; - - r0 = inner_radius; - r1 = outer_radius - tooth_depth / 2.0; - r2 = outer_radius + tooth_depth / 2.0; - - const double pi = 3.14159264; - da = 2.0 * pi / teeth / 4.0; - - glShadeModel(GL_FLAT); - glNormal3f(0.0, 0.0, 1.0); - - /* draw front face */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * pi / teeth; - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); - } - glEnd(); - - /* draw front sides of teeth */ - glBegin(GL_QUADS); - da = 2.0 * pi / teeth / 4.0; - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * pi / teeth; - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); - } - glEnd(); - - glNormal3f(0.0, 0.0, -1.0); - - /* draw back face */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * pi / teeth; - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - } - glEnd(); - - /* draw back sides of teeth */ - glBegin(GL_QUADS); - da = 2.0 * pi / teeth / 4.0; - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * pi / teeth; - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - } - glEnd(); - - /* draw outward faces of teeth */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i < teeth; i++) { - angle = i * 2.0 * pi / teeth; - glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); - glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); - u = r2 * cos(angle + da) - r1 *cos(angle); - v = r2 * sin(angle + da) - r1 *sin(angle); - len = sqrt(u * u + v * v); - u /= len; - v /= len; - glNormal3f(v, -u, 0.0); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); - glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); - glNormal3f(cos(angle), sin(angle), 0.0); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5); - glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5); - u = r1 * cos(angle + 3 * da) - r2 *cos(angle + 2 * da); - v = r1 * sin(angle + 3 * da) - r2 *sin(angle + 2 * da); - glNormal3f(v, -u, 0.0); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); - glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); - glNormal3f(cos(angle), sin(angle), 0.0); - } - glVertex3f(r1 * cos(0.0), r1 * sin(0.0), width * 0.5); - glVertex3f(r1 * cos(0.0), r1 * sin(0.0), -width * 0.5); - glEnd(); - - glShadeModel(GL_SMOOTH); - - /* draw inside radius cylinder */ - glBegin(GL_QUAD_STRIP); - for (i = 0; i <= teeth; i++) { - angle = i * 2.0 * pi / teeth; - glNormal3f(-cos(angle), -sin(angle), 0.0); - glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); - glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); - } - glEnd(); + GLint i; + GLfloat r0, r1, r2; + GLfloat angle, da; + GLfloat u, v, len; + + r0 = inner_radius; + r1 = outer_radius - tooth_depth / 2.0; + r2 = outer_radius + tooth_depth / 2.0; + + const double pi = 3.14159264; + da = 2.0 * pi / teeth / 4.0; + + glShadeModel(GL_FLAT); + glNormal3f(0.0, 0.0, 1.0); + + /* draw front face */ + glBegin(GL_QUAD_STRIP); + for (i = 0; i <= teeth; i++) { + angle = i * 2.0 * pi / teeth; + glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); + glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); + glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); + glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); + } + glEnd(); + + /* draw front sides of teeth */ + glBegin(GL_QUADS); + da = 2.0 * pi / teeth / 4.0; + for (i = 0; i < teeth; i++) { + angle = i * 2.0 * pi / teeth; + glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); + glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); + glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5); + glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); + } + glEnd(); + + glNormal3f(0.0, 0.0, -1.0); + + /* draw back face */ + glBegin(GL_QUAD_STRIP); + for (i = 0; i <= teeth; i++) { + angle = i * 2.0 * pi / teeth; + glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); + glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); + glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); + glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); + } + glEnd(); + + /* draw back sides of teeth */ + glBegin(GL_QUADS); + da = 2.0 * pi / teeth / 4.0; + for (i = 0; i < teeth; i++) { + angle = i * 2.0 * pi / teeth; + glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); + glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5); + glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); + glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); + } + glEnd(); + + /* draw outward faces of teeth */ + glBegin(GL_QUAD_STRIP); + for (i = 0; i < teeth; i++) { + angle = i * 2.0 * pi / teeth; + glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5); + glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5); + u = r2 * cos(angle + da) - r1 * cos(angle); + v = r2 * sin(angle + da) - r1 * sin(angle); + len = sqrt(u * u + v * v); + u /= len; + v /= len; + glNormal3f(v, -u, 0.0); + glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5); + glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5); + glNormal3f(cos(angle), sin(angle), 0.0); + glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5); + glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5); + u = r1 * cos(angle + 3 * da) - r2 * cos(angle + 2 * da); + v = r1 * sin(angle + 3 * da) - r2 * sin(angle + 2 * da); + glNormal3f(v, -u, 0.0); + glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5); + glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5); + glNormal3f(cos(angle), sin(angle), 0.0); + } + glVertex3f(r1 * cos(0.0), r1 * sin(0.0), width * 0.5); + glVertex3f(r1 * cos(0.0), r1 * sin(0.0), -width * 0.5); + glEnd(); + + glShadeModel(GL_SMOOTH); + + /* draw inside radius cylinder */ + glBegin(GL_QUAD_STRIP); + for (i = 0; i <= teeth; i++) { + angle = i * 2.0 * pi / teeth; + glNormal3f(-cos(angle), -sin(angle), 0.0); + glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5); + glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5); + } + glEnd(); } - - static void drawGearGL(int id) { - static GLfloat pos[4] = { 5.0f, 5.0f, 10.0f, 1.0f }; - static GLfloat ared[4] = { 0.8f, 0.1f, 0.0f, 1.0f }; - static GLfloat agreen[4] = { 0.0f, 0.8f, 0.2f, 1.0f }; - static GLfloat ablue[4] = { 0.2f, 0.2f, 1.0f, 1.0f }; - - glLightfv(GL_LIGHT0, GL_POSITION, pos); - glEnable(GL_CULL_FACE); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - - switch (id) - { - case 1: - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ared); - gearGL(1.0f, 4.0f, 1.0f, 20, 0.7f); - break; - case 2: - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, agreen); - gearGL(0.5f, 2.0f, 2.0f, 10, 0.7f); - break; - case 3: - glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ablue); - gearGL(1.3f, 2.0f, 0.5f, 10, 0.7f); - break; - default: - break; - } - glEnable(GL_NORMALIZE); + static GLfloat pos[4] = {5.0f, 5.0f, 10.0f, 1.0f}; + static GLfloat ared[4] = {0.8f, 0.1f, 0.0f, 1.0f}; + static GLfloat agreen[4] = {0.0f, 0.8f, 0.2f, 1.0f}; + static GLfloat ablue[4] = {0.2f, 0.2f, 1.0f, 1.0f}; + + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glEnable(GL_CULL_FACE); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_DEPTH_TEST); + + switch (id) { + case 1: + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ared); + gearGL(1.0f, 4.0f, 1.0f, 20, 0.7f); + break; + case 2: + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, agreen); + gearGL(0.5f, 2.0f, 2.0f, 10, 0.7f); + break; + case 3: + glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ablue); + gearGL(1.3f, 2.0f, 0.5f, 10, 0.7f); + break; + default: + break; + } + glEnable(GL_NORMALIZE); } - void RenderCamera() { - glRotatef(view_rotx, 1.0, 0.0, 0.0); - glRotatef(view_roty, 0.0, 1.0, 0.0); - glRotatef(view_rotz, 0.0, 0.0, 1.0); + glRotatef(view_rotx, 1.0, 0.0, 0.0); + glRotatef(view_roty, 0.0, 1.0, 0.0); + glRotatef(view_rotz, 0.0, 0.0, 1.0); } - void RenderScene() { - glPushMatrix(); - glTranslatef(-3.0, -2.0, 0.0); - glRotatef(fAngle, 0.0, 0.0, 1.0); - drawGearGL(1); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(3.1f, -2.0f, 0.0f); - glRotatef(-2.0 * fAngle - 9.0, 0.0, 0.0, 1.0); - drawGearGL(2); - glPopMatrix(); - - glPushMatrix(); - glTranslatef(-3.1f, 2.2f, -1.8f); - glRotatef(90.0f, 1.0f, 0.0f, 0.0f); - glRotatef(2.0 * fAngle - 2.0, 0.0, 0.0, 1.0); - drawGearGL(3); - glPopMatrix(); + glPushMatrix(); + glTranslatef(-3.0, -2.0, 0.0); + glRotatef(fAngle, 0.0, 0.0, 1.0); + drawGearGL(1); + glPopMatrix(); + + glPushMatrix(); + glTranslatef(3.1f, -2.0f, 0.0f); + glRotatef(-2.0 * fAngle - 9.0, 0.0, 0.0, 1.0); + drawGearGL(2); + glPopMatrix(); + + glPushMatrix(); + glTranslatef(-3.1f, 2.2f, -1.8f); + glRotatef(90.0f, 1.0f, 0.0f, 0.0f); + glRotatef(2.0 * fAngle - 2.0, 0.0, 0.0, 1.0); + drawGearGL(3); + glPopMatrix(); } - static void View(GHOST_IWindow *window, bool stereo, int eye = 0) { - window->activateDrawingContext(); - GHOST_Rect bnds; - int noOfScanlines = 0, lowerScanline = 0; - /* hard coded for testing purposes, display device dependent */ - int verticalBlankingInterval = 32; - float left, right, bottom, top; - float nearplane, farplane, zeroPlane, distance; - float eyeSeparation = 0.62f; - window->getClientBounds(bnds); - - // viewport - if (stereo) - { - if (nVidiaWindows) - { - // handled by nVidia driver so act as normal (explicitly put here since - // it -is- stereo) - glViewport(0, 0, bnds.getWidth(), bnds.getHeight()); - } - else { // generic cross platform above-below stereo - noOfScanlines = (bnds.getHeight() - verticalBlankingInterval) / 2; - switch (eye) - { - case LEFT_EYE: - // upper half of window - lowerScanline = bnds.getHeight() - noOfScanlines; - break; - case RIGHT_EYE: - // lower half of window - lowerScanline = 0; - break; - } - } - } - else { - noOfScanlines = bnds.getHeight(); - lowerScanline = 0; - } - - glViewport(0, lowerScanline, bnds.getWidth(), noOfScanlines); - - // projection - left = -6.0; - right = 6.0; - bottom = -4.8f; - top = 4.8f; - nearplane = 5.0; - farplane = 60.0; - - if (stereo) - { - zeroPlane = 0.0; - distance = 14.5; - switch (eye) - { - case LEFT_EYE: - StereoProjection(left, right, bottom, top, nearplane, farplane, zeroPlane, distance, -eyeSeparation / 2.0); - break; - case RIGHT_EYE: - StereoProjection(left, right, bottom, top, nearplane, farplane, zeroPlane, distance, eyeSeparation / 2.0); - break; - } - } - else { -// left = -w; -// right = w; -// bottom = -h; -// top = h; - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(left, right, bottom, top, 5.0, 60.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -40.0); - - } - - glClearColor(.2f, 0.0f, 0.0f, 0.0f); + window->activateDrawingContext(); + GHOST_Rect bnds; + int noOfScanlines = 0, lowerScanline = 0; + /* hard coded for testing purposes, display device dependent */ + int verticalBlankingInterval = 32; + float left, right, bottom, top; + float nearplane, farplane, zeroPlane, distance; + float eyeSeparation = 0.62f; + window->getClientBounds(bnds); + + // viewport + if (stereo) { + if (nVidiaWindows) { + // handled by nVidia driver so act as normal (explicitly put here since + // it -is- stereo) + glViewport(0, 0, bnds.getWidth(), bnds.getHeight()); + } + else { // generic cross platform above-below stereo + noOfScanlines = (bnds.getHeight() - verticalBlankingInterval) / 2; + switch (eye) { + case LEFT_EYE: + // upper half of window + lowerScanline = bnds.getHeight() - noOfScanlines; + break; + case RIGHT_EYE: + // lower half of window + lowerScanline = 0; + break; + } + } + } + else { + noOfScanlines = bnds.getHeight(); + lowerScanline = 0; + } + + glViewport(0, lowerScanline, bnds.getWidth(), noOfScanlines); + + // projection + left = -6.0; + right = 6.0; + bottom = -4.8f; + top = 4.8f; + nearplane = 5.0; + farplane = 60.0; + + if (stereo) { + zeroPlane = 0.0; + distance = 14.5; + switch (eye) { + case LEFT_EYE: + StereoProjection(left, + right, + bottom, + top, + nearplane, + farplane, + zeroPlane, + distance, + -eyeSeparation / 2.0); + break; + case RIGHT_EYE: + StereoProjection(left, + right, + bottom, + top, + nearplane, + farplane, + zeroPlane, + distance, + eyeSeparation / 2.0); + break; + } + } + else { + // left = -w; + // right = w; + // bottom = -h; + // top = h; + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(left, right, bottom, top, 5.0, 60.0); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glTranslatef(0.0, 0.0, -40.0); + } + + glClearColor(.2f, 0.0f, 0.0f, 0.0f); } - -void StereoProjection(float left, float right, float bottom, float top, float nearplane, float farplane, - float zero_plane, float dist, - float eye) +void StereoProjection(float left, + float right, + float bottom, + float top, + float nearplane, + float farplane, + float zero_plane, + float dist, + float eye) /* Perform the perspective projection for one eye's subfield. * The projection is in the direction of the negative z axis. * @@ -357,395 +369,380 @@ void StereoProjection(float left, float right, float bottom, float top, float ne * negative for the left eye subfield. */ { - float xmid, ymid, clip_near, clip_far, topw, bottomw, leftw, rightw, - dx, dy, n_over_d; + float xmid, ymid, clip_near, clip_far, topw, bottomw, leftw, rightw, dx, dy, n_over_d; - dx = right - left; - dy = top - bottom; + dx = right - left; + dy = top - bottom; - xmid = (right + left) / 2.0; - ymid = (top + bottom) / 2.0; + xmid = (right + left) / 2.0; + ymid = (top + bottom) / 2.0; - clip_near = dist + zero_plane - nearplane; - clip_far = dist + zero_plane - farplane; + clip_near = dist + zero_plane - nearplane; + clip_far = dist + zero_plane - farplane; - n_over_d = clip_near / dist; + n_over_d = clip_near / dist; - topw = n_over_d * dy / 2.0; - bottomw = -topw; - rightw = n_over_d * (dx / 2.0 - eye); - leftw = n_over_d * (-dx / 2.0 - eye); + topw = n_over_d * dy / 2.0; + bottomw = -topw; + rightw = n_over_d * (dx / 2.0 - eye); + leftw = n_over_d * (-dx / 2.0 - eye); - /* Need to be in projection mode for this. */ - glLoadIdentity(); - glFrustum(leftw, rightw, bottomw, topw, clip_near, clip_far); + /* Need to be in projection mode for this. */ + glLoadIdentity(); + glFrustum(leftw, rightw, bottomw, topw, clip_near, clip_far); - glTranslatef(-xmid - eye, -ymid, -zero_plane - dist); - return; + glTranslatef(-xmid - eye, -ymid, -zero_plane - dist); + return; } /* stereoproj */ - class Application : public GHOST_IEventConsumer { -public: - Application(GHOST_ISystem *system); - ~Application(void); - virtual bool processEvent(GHOST_IEvent *event); - - GHOST_ISystem *m_system; - GHOST_IWindow *m_mainWindow; - GHOST_IWindow *m_secondaryWindow; - GHOST_IWindow *m_fullScreenWindow; - GHOST_ITimerTask *m_gearsTimer, *m_testTimer; - GHOST_TStandardCursor m_cursor; - bool m_exitRequested; - - bool stereo; + public: + Application(GHOST_ISystem *system); + ~Application(void); + virtual bool processEvent(GHOST_IEvent *event); + + GHOST_ISystem *m_system; + GHOST_IWindow *m_mainWindow; + GHOST_IWindow *m_secondaryWindow; + GHOST_IWindow *m_fullScreenWindow; + GHOST_ITimerTask *m_gearsTimer, *m_testTimer; + GHOST_TStandardCursor m_cursor; + bool m_exitRequested; + + bool stereo; }; - Application::Application(GHOST_ISystem *system) - : m_system(system), m_mainWindow(0), m_secondaryWindow(0), m_fullScreenWindow(0), - m_gearsTimer(0), m_testTimer(0), m_cursor(GHOST_kStandardCursorFirstCursor), - m_exitRequested(false), stereo(false) + : m_system(system), + m_mainWindow(0), + m_secondaryWindow(0), + m_fullScreenWindow(0), + m_gearsTimer(0), + m_testTimer(0), + m_cursor(GHOST_kStandardCursorFirstCursor), + m_exitRequested(false), + stereo(false) { - GHOST_GLSettings glSettings = {0}; - fApp = this; - - // Create the main window - STR_String title1("gears - main window"); - m_mainWindow = system->createWindow( - title1, - 10, 64, 320, 200, - GHOST_kWindowStateNormal, - GHOST_kDrawingContextTypeOpenGL, - glSettings); - - if (!m_mainWindow) { - std::cout << "could not create main window\n"; - exit(-1); - } - - // Create a secondary window - STR_String title2("gears - secondary window"); - m_secondaryWindow = system->createWindow( - title2, - 340, 64, 320, 200, - GHOST_kWindowStateNormal, - GHOST_kDrawingContextTypeOpenGL, - glSettings); - if (!m_secondaryWindow) { - std::cout << "could not create secondary window\n"; - exit(-1); - } - - // Install a timer to have the gears running - m_gearsTimer = system->installTimer(0 /*delay*/, 20 /*interval*/, gearsTimerProc, m_mainWindow); + GHOST_GLSettings glSettings = {0}; + fApp = this; + + // Create the main window + STR_String title1("gears - main window"); + m_mainWindow = system->createWindow(title1, + 10, + 64, + 320, + 200, + GHOST_kWindowStateNormal, + GHOST_kDrawingContextTypeOpenGL, + glSettings); + + if (!m_mainWindow) { + std::cout << "could not create main window\n"; + exit(-1); + } + + // Create a secondary window + STR_String title2("gears - secondary window"); + m_secondaryWindow = system->createWindow(title2, + 340, + 64, + 320, + 200, + GHOST_kWindowStateNormal, + GHOST_kDrawingContextTypeOpenGL, + glSettings); + if (!m_secondaryWindow) { + std::cout << "could not create secondary window\n"; + exit(-1); + } + + // Install a timer to have the gears running + m_gearsTimer = system->installTimer(0 /*delay*/, 20 /*interval*/, gearsTimerProc, m_mainWindow); } - Application::~Application(void) { - // Dispose windows - if (m_system->validWindow(m_mainWindow)) { - m_system->disposeWindow(m_mainWindow); - } - if (m_system->validWindow(m_secondaryWindow)) { - m_system->disposeWindow(m_secondaryWindow); - } + // Dispose windows + if (m_system->validWindow(m_mainWindow)) { + m_system->disposeWindow(m_mainWindow); + } + if (m_system->validWindow(m_secondaryWindow)) { + m_system->disposeWindow(m_secondaryWindow); + } } - bool Application::processEvent(GHOST_IEvent *event) { - GHOST_IWindow *window = event->getWindow(); - bool handled = true; + GHOST_IWindow *window = event->getWindow(); + bool handled = true; - switch (event->getType()) { + switch (event->getType()) { #if 0 - case GHOST_kEventUnknown: - break; - case GHOST_kEventCursorButton: - std::cout << "GHOST_kEventCursorButton"; break; - case GHOST_kEventCursorMove: - std::cout << "GHOST_kEventCursorMove"; break; + case GHOST_kEventUnknown: + break; + case GHOST_kEventCursorButton: + std::cout << "GHOST_kEventCursorButton"; break; + case GHOST_kEventCursorMove: + std::cout << "GHOST_kEventCursorMove"; break; #endif - case GHOST_kEventWheel: - { - GHOST_TEventWheelData *wheelData = (GHOST_TEventWheelData *) event->getData(); - if (wheelData->z > 0) - { - view_rotz += 5.f; - } - else { - view_rotz -= 5.f; - } - } - break; - - case GHOST_kEventKeyUp: - break; - - case GHOST_kEventKeyDown: - { - GHOST_TEventKeyData *keyData = (GHOST_TEventKeyData *) event->getData(); - switch (keyData->key) { - case GHOST_kKeyC: - { - int cursor = m_cursor; - cursor++; - if (cursor >= GHOST_kStandardCursorNumCursors) { - cursor = GHOST_kStandardCursorFirstCursor; - } - m_cursor = (GHOST_TStandardCursor)cursor; - window->setCursorShape(m_cursor); - } - break; - - case GHOST_kKeyE: - { - int x = 200, y = 200; - m_system->setCursorPosition(x, y); - break; - } - - case GHOST_kKeyF: - if (!m_system->getFullScreen()) { - // Begin fullscreen mode - GHOST_DisplaySetting setting; - - setting.bpp = 16; - setting.frequency = 50; - setting.xPixels = 640; - setting.yPixels = 480; - m_system->beginFullScreen(setting, &m_fullScreenWindow, false /* stereo flag */); - } - else { - m_system->endFullScreen(); - m_fullScreenWindow = 0; - } - break; - - case GHOST_kKeyH: - window->setCursorVisibility(!window->getCursorVisibility()); - break; - - case GHOST_kKeyM: - { - bool down = false; - m_system->getModifierKeyState(GHOST_kModifierKeyLeftShift, down); - if (down) { - std::cout << "left shift down\n"; - } - m_system->getModifierKeyState(GHOST_kModifierKeyRightShift, down); - if (down) { - std::cout << "right shift down\n"; - } - m_system->getModifierKeyState(GHOST_kModifierKeyLeftAlt, down); - if (down) { - std::cout << "left Alt down\n"; - } - m_system->getModifierKeyState(GHOST_kModifierKeyRightAlt, down); - if (down) { - std::cout << "right Alt down\n"; - } - m_system->getModifierKeyState(GHOST_kModifierKeyLeftControl, down); - if (down) { - std::cout << "left control down\n"; - } - m_system->getModifierKeyState(GHOST_kModifierKeyRightControl, down); - if (down) { - std::cout << "right control down\n"; - } - } - break; - - case GHOST_kKeyQ: - if (m_system->getFullScreen()) - { - m_system->endFullScreen(); - m_fullScreenWindow = 0; - } - m_exitRequested = true; - break; - - case GHOST_kKeyS: // toggle mono and stereo - if (stereo) - stereo = false; - else - stereo = true; - break; - - case GHOST_kKeyT: - if (!m_testTimer) { - m_testTimer = m_system->installTimer(0, 1000, testTimerProc); - } - - else { - m_system->removeTimer(m_testTimer); - m_testTimer = 0; - } - - break; - - case GHOST_kKeyW: - if (m_mainWindow) - { - STR_String title; - m_mainWindow->getTitle(title); - title += "-"; - m_mainWindow->setTitle(title); - - } - break; - - default: - break; - } - } - break; - - case GHOST_kEventWindowClose: - { - GHOST_IWindow *window2 = event->getWindow(); - if (window2 == m_mainWindow) { - m_exitRequested = true; - } - else { - m_system->disposeWindow(window2); - } - } - break; - - case GHOST_kEventWindowActivate: - handled = false; - break; - - case GHOST_kEventWindowDeactivate: - handled = false; - break; - - case GHOST_kEventWindowUpdate: - { - GHOST_IWindow *window2 = event->getWindow(); - if (!m_system->validWindow(window2)) - break; - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - if (stereo) - { - View(window2, stereo, LEFT_EYE); - glPushMatrix(); - RenderCamera(); - RenderScene(); - glPopMatrix(); - - View(window2, stereo, RIGHT_EYE); - glPushMatrix(); - RenderCamera(); - RenderScene(); - glPopMatrix(); - } - else { - View(window2, stereo); - glPushMatrix(); - RenderCamera(); - RenderScene(); - glPopMatrix(); - } - window2->swapBuffers(); - } - break; - - default: - handled = false; - break; - } - return handled; + case GHOST_kEventWheel: { + GHOST_TEventWheelData *wheelData = (GHOST_TEventWheelData *)event->getData(); + if (wheelData->z > 0) { + view_rotz += 5.f; + } + else { + view_rotz -= 5.f; + } + } break; + + case GHOST_kEventKeyUp: + break; + + case GHOST_kEventKeyDown: { + GHOST_TEventKeyData *keyData = (GHOST_TEventKeyData *)event->getData(); + switch (keyData->key) { + case GHOST_kKeyC: { + int cursor = m_cursor; + cursor++; + if (cursor >= GHOST_kStandardCursorNumCursors) { + cursor = GHOST_kStandardCursorFirstCursor; + } + m_cursor = (GHOST_TStandardCursor)cursor; + window->setCursorShape(m_cursor); + } break; + + case GHOST_kKeyE: { + int x = 200, y = 200; + m_system->setCursorPosition(x, y); + break; + } + + case GHOST_kKeyF: + if (!m_system->getFullScreen()) { + // Begin fullscreen mode + GHOST_DisplaySetting setting; + + setting.bpp = 16; + setting.frequency = 50; + setting.xPixels = 640; + setting.yPixels = 480; + m_system->beginFullScreen(setting, &m_fullScreenWindow, false /* stereo flag */); + } + else { + m_system->endFullScreen(); + m_fullScreenWindow = 0; + } + break; + + case GHOST_kKeyH: + window->setCursorVisibility(!window->getCursorVisibility()); + break; + + case GHOST_kKeyM: { + bool down = false; + m_system->getModifierKeyState(GHOST_kModifierKeyLeftShift, down); + if (down) { + std::cout << "left shift down\n"; + } + m_system->getModifierKeyState(GHOST_kModifierKeyRightShift, down); + if (down) { + std::cout << "right shift down\n"; + } + m_system->getModifierKeyState(GHOST_kModifierKeyLeftAlt, down); + if (down) { + std::cout << "left Alt down\n"; + } + m_system->getModifierKeyState(GHOST_kModifierKeyRightAlt, down); + if (down) { + std::cout << "right Alt down\n"; + } + m_system->getModifierKeyState(GHOST_kModifierKeyLeftControl, down); + if (down) { + std::cout << "left control down\n"; + } + m_system->getModifierKeyState(GHOST_kModifierKeyRightControl, down); + if (down) { + std::cout << "right control down\n"; + } + } break; + + case GHOST_kKeyQ: + if (m_system->getFullScreen()) { + m_system->endFullScreen(); + m_fullScreenWindow = 0; + } + m_exitRequested = true; + break; + + case GHOST_kKeyS: // toggle mono and stereo + if (stereo) + stereo = false; + else + stereo = true; + break; + + case GHOST_kKeyT: + if (!m_testTimer) { + m_testTimer = m_system->installTimer(0, 1000, testTimerProc); + } + + else { + m_system->removeTimer(m_testTimer); + m_testTimer = 0; + } + + break; + + case GHOST_kKeyW: + if (m_mainWindow) { + STR_String title; + m_mainWindow->getTitle(title); + title += "-"; + m_mainWindow->setTitle(title); + } + break; + + default: + break; + } + } break; + + case GHOST_kEventWindowClose: { + GHOST_IWindow *window2 = event->getWindow(); + if (window2 == m_mainWindow) { + m_exitRequested = true; + } + else { + m_system->disposeWindow(window2); + } + } break; + + case GHOST_kEventWindowActivate: + handled = false; + break; + + case GHOST_kEventWindowDeactivate: + handled = false; + break; + + case GHOST_kEventWindowUpdate: { + GHOST_IWindow *window2 = event->getWindow(); + if (!m_system->validWindow(window2)) + break; + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + if (stereo) { + View(window2, stereo, LEFT_EYE); + glPushMatrix(); + RenderCamera(); + RenderScene(); + glPopMatrix(); + + View(window2, stereo, RIGHT_EYE); + glPushMatrix(); + RenderCamera(); + RenderScene(); + glPopMatrix(); + } + else { + View(window2, stereo); + glPushMatrix(); + RenderCamera(); + RenderScene(); + glPopMatrix(); + } + window2->swapBuffers(); + } break; + + default: + handled = false; + break; + } + return handled; } - int main(int /*argc*/, char ** /*argv*/) { - nVidiaWindows = false; -// nVidiaWindows = true; + nVidiaWindows = false; + // nVidiaWindows = true; #ifdef WIN32 - /* Set a couple of settings in the registry for the nVidia detonator driver. - * So this is very specific... - */ - if (nVidiaWindows) - { - LONG lresult; - HKEY hkey = 0; - DWORD dwd = 0; - //unsigned char buffer[128]; - - CRegKey regkey; - //DWORD keyValue; -// lresult = regkey.Open(HKEY_LOCAL_MACHINE, "SOFTWARE\\NVIDIA Corporation\\Global\\Stereo3D\\StereoEnable"); - lresult = regkey.Open(HKEY_LOCAL_MACHINE, "SOFTWARE\\NVIDIA Corporation\\Global\\Stereo3D\\StereoEnable", - KEY_ALL_ACCESS); - - if (lresult == ERROR_SUCCESS) - printf("Successfully opened key\n"); -#if 0 - lresult = regkey.QueryValue(&keyValue, "StereoEnable"); - if (lresult == ERROR_SUCCESS) - printf("Successfully queried key\n"); -#endif - lresult = regkey.SetValue(HKEY_LOCAL_MACHINE, "SOFTWARE\\NVIDIA Corporation\\Global\\Stereo3D\\StereoEnable", - "1"); - if (lresult == ERROR_SUCCESS) - printf("Successfully set value for key\n"); - regkey.Close(); - if (lresult == ERROR_SUCCESS) - printf("Successfully closed key\n"); -// regkey.Write("2"); - } + /* Set a couple of settings in the registry for the nVidia detonator driver. + * So this is very specific... + */ + if (nVidiaWindows) { + LONG lresult; + HKEY hkey = 0; + DWORD dwd = 0; + //unsigned char buffer[128]; + + CRegKey regkey; + //DWORD keyValue; + // lresult = regkey.Open(HKEY_LOCAL_MACHINE, "SOFTWARE\\NVIDIA Corporation\\Global\\Stereo3D\\StereoEnable"); + lresult = regkey.Open(HKEY_LOCAL_MACHINE, + "SOFTWARE\\NVIDIA Corporation\\Global\\Stereo3D\\StereoEnable", + KEY_ALL_ACCESS); + + if (lresult == ERROR_SUCCESS) + printf("Successfully opened key\n"); +# if 0 + lresult = regkey.QueryValue(&keyValue, "StereoEnable"); + if (lresult == ERROR_SUCCESS) + printf("Successfully queried key\n"); +# endif + lresult = regkey.SetValue( + HKEY_LOCAL_MACHINE, "SOFTWARE\\NVIDIA Corporation\\Global\\Stereo3D\\StereoEnable", "1"); + if (lresult == ERROR_SUCCESS) + printf("Successfully set value for key\n"); + regkey.Close(); + if (lresult == ERROR_SUCCESS) + printf("Successfully closed key\n"); + // regkey.Write("2"); + } #endif // WIN32 - // Create the system - GHOST_ISystem::createSystem(); - fSystem = GHOST_ISystem::getSystem(); + // Create the system + GHOST_ISystem::createSystem(); + fSystem = GHOST_ISystem::getSystem(); - if (fSystem) { - // Create an application object - Application app(fSystem); + if (fSystem) { + // Create an application object + Application app(fSystem); - // Add the application as event consumer - fSystem->addEventConsumer(&app); + // Add the application as event consumer + fSystem->addEventConsumer(&app); - // Enter main loop - while (!app.m_exitRequested) { - //printf("main: loop\n"); - fSystem->processEvents(true); - fSystem->dispatchEvents(); - } + // Enter main loop + while (!app.m_exitRequested) { + //printf("main: loop\n"); + fSystem->processEvents(true); + fSystem->dispatchEvents(); + } - // Remove so ghost doesn't do a double free - fSystem->removeEventConsumer(&app); - } + // Remove so ghost doesn't do a double free + fSystem->removeEventConsumer(&app); + } - // Dispose the system - GHOST_ISystem::disposeSystem(); + // Dispose the system + GHOST_ISystem::disposeSystem(); - return 0; + return 0; } - static void gearsTimerProc(GHOST_ITimerTask *task, GHOST_TUns64 /*time*/) { - fAngle += 2.0; - view_roty += 1.0; - GHOST_IWindow *window = (GHOST_IWindow *)task->getUserData(); - if (fApp->m_fullScreenWindow) { - // Running full screen - fApp->m_fullScreenWindow->invalidate(); - } - else { - if (fSystem->validWindow(window)) { - window->invalidate(); - } - } + fAngle += 2.0; + view_roty += 1.0; + GHOST_IWindow *window = (GHOST_IWindow *)task->getUserData(); + if (fApp->m_fullScreenWindow) { + // Running full screen + fApp->m_fullScreenWindow->invalidate(); + } + else { + if (fSystem->validWindow(window)) { + window->invalidate(); + } + } } diff --git a/intern/ghost/test/multitest/Basic.c b/intern/ghost/test/multitest/Basic.c index 17f1fc0de48..670c7583fe5 100644 --- a/intern/ghost/test/multitest/Basic.c +++ b/intern/ghost/test/multitest/Basic.c @@ -21,45 +21,45 @@ int min_i(int a, int b) { - return (a < b) ? a : b; + return (a < b) ? a : b; } int max_i(int a, int b) { - return (b < a) ? a : b; + return (b < a) ? a : b; } int clamp_i(int val, int min, int max) { - return min_i(max_i(val, min), max); + return min_i(max_i(val, min), max); } float min_f(float a, float b) { - return (a < b) ? a : b; + return (a < b) ? a : b; } float max_f(float a, float b) { - return (b < a) ? a : b; + return (b < a) ? a : b; } float clamp_f(float val, float min, float max) { - return min_f(max_f(val, min), max); + return min_f(max_f(val, min), max); } void rect_copy(int dst[2][2], int src[2][2]) { - dst[0][0] = src[0][0], dst[0][1] = src[0][1]; - dst[1][0] = src[1][0], dst[1][1] = src[1][1]; + dst[0][0] = src[0][0], dst[0][1] = src[0][1]; + dst[1][0] = src[1][0], dst[1][1] = src[1][1]; } int rect_contains_pt(int rect[2][2], int pt[2]) { - return ((rect[0][0] <= pt[0] && pt[0] <= rect[1][0]) && - (rect[0][1] <= pt[1] && pt[1] <= rect[1][1])); + return ((rect[0][0] <= pt[0] && pt[0] <= rect[1][0]) && + (rect[0][1] <= pt[1] && pt[1] <= rect[1][1])); } int rect_width(int rect[2][2]) { - return (rect[1][0] - rect[0][0]); + return (rect[1][0] - rect[0][0]); } int rect_height(int rect[2][2]) { - return (rect[1][1] - rect[0][1]); + return (rect[1][1] - rect[0][1]); } diff --git a/intern/ghost/test/multitest/Basic.h b/intern/ghost/test/multitest/Basic.h index 16af83be8dd..1557be8433e 100644 --- a/intern/ghost/test/multitest/Basic.h +++ b/intern/ghost/test/multitest/Basic.h @@ -17,16 +17,16 @@ * All rights reserved. */ -int min_i (int a, int b); +int min_i(int a, int b); -int max_i (int a, int b); -int clamp_i (int val, int min, int max); +int max_i(int a, int b); +int clamp_i(int val, int min, int max); -float min_f (float a, float b); -float max_f (float a, float b); -float clamp_f (float val, float min, float max); +float min_f(float a, float b); +float max_f(float a, float b); +float clamp_f(float val, float min, float max); -void rect_copy (int dst[2][2], int src[2][2]); -int rect_contains_pt (int rect[2][2], int pt[2]); -int rect_width (int rect[2][2]); -int rect_height (int rect[2][2]); +void rect_copy(int dst[2][2], int src[2][2]); +int rect_contains_pt(int rect[2][2], int pt[2]); +int rect_width(int rect[2][2]); +int rect_height(int rect[2][2]); diff --git a/intern/ghost/test/multitest/EventToBuf.c b/intern/ghost/test/multitest/EventToBuf.c index 4edebec8066..5aee8a50a8d 100644 --- a/intern/ghost/test/multitest/EventToBuf.c +++ b/intern/ghost/test/multitest/EventToBuf.c @@ -28,204 +28,215 @@ char *eventtype_to_string(GHOST_TEventType type) { - switch (type) { - case GHOST_kEventCursorMove: return "CursorMove"; - case GHOST_kEventButtonDown: return "ButtonDown"; - case GHOST_kEventButtonUp: return "ButtonUp"; - - case GHOST_kEventKeyDown: return "KeyDown"; - case GHOST_kEventKeyUp: return "KeyUp"; - - case GHOST_kEventQuit: return "Quit"; - - case GHOST_kEventWindowClose: return "WindowClose"; - case GHOST_kEventWindowActivate: return "WindowActivate"; - case GHOST_kEventWindowDeactivate: return "WindowDeactivate"; - case GHOST_kEventWindowUpdate: return "WindowUpdate"; - case GHOST_kEventWindowSize: return "WindowSize"; - default: - return "<invalid>"; - } + switch (type) { + case GHOST_kEventCursorMove: + return "CursorMove"; + case GHOST_kEventButtonDown: + return "ButtonDown"; + case GHOST_kEventButtonUp: + return "ButtonUp"; + + case GHOST_kEventKeyDown: + return "KeyDown"; + case GHOST_kEventKeyUp: + return "KeyUp"; + + case GHOST_kEventQuit: + return "Quit"; + + case GHOST_kEventWindowClose: + return "WindowClose"; + case GHOST_kEventWindowActivate: + return "WindowActivate"; + case GHOST_kEventWindowDeactivate: + return "WindowDeactivate"; + case GHOST_kEventWindowUpdate: + return "WindowUpdate"; + case GHOST_kEventWindowSize: + return "WindowSize"; + default: + return "<invalid>"; + } } static char *keytype_to_string(GHOST_TKey key) { -#define K(key) case GHOST_k##key: return #key; - switch (key) { - K(KeyBackSpace); - K(KeyTab); - K(KeyLinefeed); - K(KeyClear); - K(KeyEnter); - - K(KeyEsc); - K(KeySpace); - K(KeyQuote); - K(KeyComma); - K(KeyMinus); - K(KeyPeriod); - K(KeySlash); - - K(Key0); - K(Key1); - K(Key2); - K(Key3); - K(Key4); - K(Key5); - K(Key6); - K(Key7); - K(Key8); - K(Key9); - - K(KeySemicolon); - K(KeyEqual); - - K(KeyA); - K(KeyB); - K(KeyC); - K(KeyD); - K(KeyE); - K(KeyF); - K(KeyG); - K(KeyH); - K(KeyI); - K(KeyJ); - K(KeyK); - K(KeyL); - K(KeyM); - K(KeyN); - K(KeyO); - K(KeyP); - K(KeyQ); - K(KeyR); - K(KeyS); - K(KeyT); - K(KeyU); - K(KeyV); - K(KeyW); - K(KeyX); - K(KeyY); - K(KeyZ); - - K(KeyLeftBracket); - K(KeyRightBracket); - K(KeyBackslash); - K(KeyAccentGrave); - - K(KeyLeftShift); - K(KeyRightShift); - K(KeyLeftControl); - K(KeyRightControl); - K(KeyLeftAlt); - K(KeyRightAlt); - K(KeyOS); - - K(KeyCapsLock); - K(KeyNumLock); - K(KeyScrollLock); - - K(KeyLeftArrow); - K(KeyRightArrow); - K(KeyUpArrow); - K(KeyDownArrow); - - K(KeyPrintScreen); - K(KeyPause); - - K(KeyInsert); - K(KeyDelete); - K(KeyHome); - K(KeyEnd); - K(KeyUpPage); - K(KeyDownPage); - - K(KeyNumpad0); - K(KeyNumpad1); - K(KeyNumpad2); - K(KeyNumpad3); - K(KeyNumpad4); - K(KeyNumpad5); - K(KeyNumpad6); - K(KeyNumpad7); - K(KeyNumpad8); - K(KeyNumpad9); - K(KeyNumpadPeriod); - K(KeyNumpadEnter); - K(KeyNumpadPlus); - K(KeyNumpadMinus); - K(KeyNumpadAsterisk); - K(KeyNumpadSlash); - - K(KeyF1); - K(KeyF2); - K(KeyF3); - K(KeyF4); - K(KeyF5); - K(KeyF6); - K(KeyF7); - K(KeyF8); - K(KeyF9); - K(KeyF10); - K(KeyF11); - K(KeyF12); - K(KeyF13); - K(KeyF14); - K(KeyF15); - K(KeyF16); - K(KeyF17); - K(KeyF18); - K(KeyF19); - K(KeyF20); - K(KeyF21); - K(KeyF22); - K(KeyF23); - K(KeyF24); - - default: - return "KeyUnknown"; - } +#define K(key) \ + case GHOST_k##key: \ + return #key; + switch (key) { + K(KeyBackSpace); + K(KeyTab); + K(KeyLinefeed); + K(KeyClear); + K(KeyEnter); + + K(KeyEsc); + K(KeySpace); + K(KeyQuote); + K(KeyComma); + K(KeyMinus); + K(KeyPeriod); + K(KeySlash); + + K(Key0); + K(Key1); + K(Key2); + K(Key3); + K(Key4); + K(Key5); + K(Key6); + K(Key7); + K(Key8); + K(Key9); + + K(KeySemicolon); + K(KeyEqual); + + K(KeyA); + K(KeyB); + K(KeyC); + K(KeyD); + K(KeyE); + K(KeyF); + K(KeyG); + K(KeyH); + K(KeyI); + K(KeyJ); + K(KeyK); + K(KeyL); + K(KeyM); + K(KeyN); + K(KeyO); + K(KeyP); + K(KeyQ); + K(KeyR); + K(KeyS); + K(KeyT); + K(KeyU); + K(KeyV); + K(KeyW); + K(KeyX); + K(KeyY); + K(KeyZ); + + K(KeyLeftBracket); + K(KeyRightBracket); + K(KeyBackslash); + K(KeyAccentGrave); + + K(KeyLeftShift); + K(KeyRightShift); + K(KeyLeftControl); + K(KeyRightControl); + K(KeyLeftAlt); + K(KeyRightAlt); + K(KeyOS); + + K(KeyCapsLock); + K(KeyNumLock); + K(KeyScrollLock); + + K(KeyLeftArrow); + K(KeyRightArrow); + K(KeyUpArrow); + K(KeyDownArrow); + + K(KeyPrintScreen); + K(KeyPause); + + K(KeyInsert); + K(KeyDelete); + K(KeyHome); + K(KeyEnd); + K(KeyUpPage); + K(KeyDownPage); + + K(KeyNumpad0); + K(KeyNumpad1); + K(KeyNumpad2); + K(KeyNumpad3); + K(KeyNumpad4); + K(KeyNumpad5); + K(KeyNumpad6); + K(KeyNumpad7); + K(KeyNumpad8); + K(KeyNumpad9); + K(KeyNumpadPeriod); + K(KeyNumpadEnter); + K(KeyNumpadPlus); + K(KeyNumpadMinus); + K(KeyNumpadAsterisk); + K(KeyNumpadSlash); + + K(KeyF1); + K(KeyF2); + K(KeyF3); + K(KeyF4); + K(KeyF5); + K(KeyF6); + K(KeyF7); + K(KeyF8); + K(KeyF9); + K(KeyF10); + K(KeyF11); + K(KeyF12); + K(KeyF13); + K(KeyF14); + K(KeyF15); + K(KeyF16); + K(KeyF17); + K(KeyF18); + K(KeyF19); + K(KeyF20); + K(KeyF21); + K(KeyF22); + K(KeyF23); + K(KeyF24); + + default: + return "KeyUnknown"; + } #undef K } void event_to_buf(GHOST_EventHandle evt, char buf[128]) { - GHOST_TEventType type = GHOST_GetEventType(evt); - double time = (double) ((GHOST_TInt64) GHOST_GetEventTime(evt))/1000; - GHOST_WindowHandle win = GHOST_GetEventWindow(evt); - void *data = GHOST_GetEventData(evt); - char *pos = buf; - - pos += sprintf(pos, "event: %6.2f, %16s", time, eventtype_to_string(type)); - if (win) { - char *s = GHOST_GetTitle(win); - pos += sprintf(pos, " - win: %s", s); - free(s); - } - else { - pos+= sprintf(pos, " - sys evt"); - } - switch (type) { - case GHOST_kEventCursorMove: - { - GHOST_TEventCursorData *cd = data; - pos += sprintf(pos, " - pos: (%d, %d)", cd->x, cd->y); - break; - } - case GHOST_kEventButtonDown: - case GHOST_kEventButtonUp: - { - GHOST_TEventButtonData *bd = data; - pos += sprintf(pos, " - but: %d", bd->button); - break; - } - - case GHOST_kEventKeyDown: - case GHOST_kEventKeyUp: - { - GHOST_TEventKeyData *kd = data; - pos += sprintf(pos, " - key: %s (%d)", keytype_to_string(kd->key), kd->key); - if (kd->ascii) pos+= sprintf(pos, " ascii: '%c' (%d)", kd->ascii, kd->ascii); - break; - } - } + GHOST_TEventType type = GHOST_GetEventType(evt); + double time = (double)((GHOST_TInt64)GHOST_GetEventTime(evt)) / 1000; + GHOST_WindowHandle win = GHOST_GetEventWindow(evt); + void *data = GHOST_GetEventData(evt); + char *pos = buf; + + pos += sprintf(pos, "event: %6.2f, %16s", time, eventtype_to_string(type)); + if (win) { + char *s = GHOST_GetTitle(win); + pos += sprintf(pos, " - win: %s", s); + free(s); + } + else { + pos += sprintf(pos, " - sys evt"); + } + switch (type) { + case GHOST_kEventCursorMove: { + GHOST_TEventCursorData *cd = data; + pos += sprintf(pos, " - pos: (%d, %d)", cd->x, cd->y); + break; + } + case GHOST_kEventButtonDown: + case GHOST_kEventButtonUp: { + GHOST_TEventButtonData *bd = data; + pos += sprintf(pos, " - but: %d", bd->button); + break; + } + + case GHOST_kEventKeyDown: + case GHOST_kEventKeyUp: { + GHOST_TEventKeyData *kd = data; + pos += sprintf(pos, " - key: %s (%d)", keytype_to_string(kd->key), kd->key); + if (kd->ascii) + pos += sprintf(pos, " ascii: '%c' (%d)", kd->ascii, kd->ascii); + break; + } + } } diff --git a/intern/ghost/test/multitest/GL.h b/intern/ghost/test/multitest/GL.h index 9afa4e22fdb..2a7d95212e1 100644 --- a/intern/ghost/test/multitest/GL.h +++ b/intern/ghost/test/multitest/GL.h @@ -19,13 +19,13 @@ #if defined(WIN32) || defined(__APPLE__) - #ifdef WIN32 - #include <windows.h> - #include <GL/gl.h> - #else // WIN32 - // __APPLE__ is defined - #include <AGL/gl.h> - #endif // WIN32 -#else // defined(WIN32) || defined(__APPLE__) - #include <GL/gl.h> -#endif // defined(WIN32) || defined(__APPLE__) +# ifdef WIN32 +# include <windows.h> +# include <GL/gl.h> +# else // WIN32 +// __APPLE__ is defined +# include <AGL/gl.h> +# endif // WIN32 +#else // defined(WIN32) || defined(__APPLE__) +# include <GL/gl.h> +#endif // defined(WIN32) || defined(__APPLE__) diff --git a/intern/ghost/test/multitest/MultiTest.c b/intern/ghost/test/multitest/MultiTest.c index 8d6a3e94fb7..25e9f6b2bf1 100644 --- a/intern/ghost/test/multitest/MultiTest.c +++ b/intern/ghost/test/multitest/MultiTest.c @@ -19,7 +19,7 @@ #define FALSE 0 #ifdef _MSC_VER -# pragma warning(disable: 4244 4305) +# pragma warning(disable : 4244 4305) #endif #include <stdlib.h> @@ -68,56 +68,56 @@ void multitestapp_exit(MultiTestApp *app); void rect_bevel_side(int rect[2][2], int side, float *lt, float *dk, const float col[3], int width) { - int ltidx = (side / 2) % 4; - int dkidx = (ltidx + 1 + (side & 1)) % 4; - int i, corner; + int ltidx = (side / 2) % 4; + int dkidx = (ltidx + 1 + (side & 1)) % 4; + int i, corner; - glBegin(GL_LINES); - for (i = 0; i < width; i++) { - float ltf = pow(lt[i], 1.0 / 2.2), dkf = pow(dk[i], 1.0 / 2.2); - float stf = (dkidx > ltidx) ? dkf : ltf; - int lx = rect[1][0] - i - 1; - int ly = rect[0][1] + i; + glBegin(GL_LINES); + for (i = 0; i < width; i++) { + float ltf = pow(lt[i], 1.0 / 2.2), dkf = pow(dk[i], 1.0 / 2.2); + float stf = (dkidx > ltidx) ? dkf : ltf; + int lx = rect[1][0] - i - 1; + int ly = rect[0][1] + i; - glColor3f(col[0] * stf, col[1] * stf, col[2] * stf); - for (corner = 0; corner < 4; corner++) { - int x = (corner == 0 || corner == 1) ? (rect[0][0] + i) : (rect[1][0] - i - 1); - int y = (corner == 0 || corner == 3) ? (rect[0][1] + i) : (rect[1][1] - i - 1); + glColor3f(col[0] * stf, col[1] * stf, col[2] * stf); + for (corner = 0; corner < 4; corner++) { + int x = (corner == 0 || corner == 1) ? (rect[0][0] + i) : (rect[1][0] - i - 1); + int y = (corner == 0 || corner == 3) ? (rect[0][1] + i) : (rect[1][1] - i - 1); - if (ltidx == corner) - glColor3f(col[0] * ltf, col[1] * ltf, col[2] * ltf); - if (dkidx == corner) - glColor3f(col[0] * dkf, col[1] * dkf, col[2] * dkf); + if (ltidx == corner) + glColor3f(col[0] * ltf, col[1] * ltf, col[2] * ltf); + if (dkidx == corner) + glColor3f(col[0] * dkf, col[1] * dkf, col[2] * dkf); - glVertex2i(lx, ly); - glVertex2i(lx = x, ly = y); - } - } - glEnd(); + glVertex2i(lx, ly); + glVertex2i(lx = x, ly = y); + } + } + glEnd(); - glColor3fv(col); - glRecti(rect[0][0] + width, rect[0][1] + width, rect[1][0] - width, rect[1][1] - width); + glColor3fv(col); + glRecti(rect[0][0] + width, rect[0][1] + width, rect[1][0] - width, rect[1][1] - width); } void rect_bevel_smooth(int rect[2][2], int width) { - float *lt = malloc(sizeof(*lt) * width); - float *dk = malloc(sizeof(*dk) * width); - float col[4]; - int i; + float *lt = malloc(sizeof(*lt) * width); + float *dk = malloc(sizeof(*dk) * width); + float col[4]; + int i; - for (i = 0; i < width; i++) { - float v = width - 1 ? ((float) i / (width - 1)) : 0; - lt[i] = 1.2 + (1.0 - 1.2) * v; - dk[i] = 0.2 + (1.0 - 0.2) * v; - } + for (i = 0; i < width; i++) { + float v = width - 1 ? ((float)i / (width - 1)) : 0; + lt[i] = 1.2 + (1.0 - 1.2) * v; + dk[i] = 0.2 + (1.0 - 0.2) * v; + } - glGetFloatv(GL_CURRENT_COLOR, col); + glGetFloatv(GL_CURRENT_COLOR, col); - rect_bevel_side(rect, 3, lt, dk, col, width); + rect_bevel_side(rect, 3, lt, dk, col, width); - free(lt); - free(dk); + free(lt); + free(dk); } /* @@ -125,218 +125,219 @@ void rect_bevel_smooth(int rect[2][2], int width) */ typedef struct { - MultiTestApp *app; + MultiTestApp *app; - GHOST_WindowHandle win; + GHOST_WindowHandle win; - int size[2]; + int size[2]; - int lmouse[2], lmbut[3]; + int lmouse[2], lmbut[3]; - int tmouse[2]; + int tmouse[2]; } MainWindow; static void mainwindow_log(MainWindow *mw, char *str) { - loggerwindow_log(multitestapp_get_logger(mw->app), str); + loggerwindow_log(multitestapp_get_logger(mw->app), str); } static void mainwindow_do_draw(MainWindow *mw) { - GHOST_ActivateWindowDrawingContext(mw->win); + GHOST_ActivateWindowDrawingContext(mw->win); - if (mw->lmbut[0]) { - glClearColor(0.5, 0.5, 0.5, 1); - } - else { - glClearColor(1, 1, 1, 1); - } - glClear(GL_COLOR_BUFFER_BIT); + if (mw->lmbut[0]) { + glClearColor(0.5, 0.5, 0.5, 1); + } + else { + glClearColor(1, 1, 1, 1); + } + glClear(GL_COLOR_BUFFER_BIT); - glColor3f(0.5, 0.6, 0.8); - glRecti(mw->tmouse[0] - 5, mw->tmouse[1] - 5, mw->tmouse[0] + 5, mw->tmouse[1] + 5); + glColor3f(0.5, 0.6, 0.8); + glRecti(mw->tmouse[0] - 5, mw->tmouse[1] - 5, mw->tmouse[0] + 5, mw->tmouse[1] + 5); - GHOST_SwapWindowBuffers(mw->win); + GHOST_SwapWindowBuffers(mw->win); } static void mainwindow_do_reshape(MainWindow *mw) { - GHOST_RectangleHandle bounds = GHOST_GetClientBounds(mw->win); + GHOST_RectangleHandle bounds = GHOST_GetClientBounds(mw->win); - GHOST_ActivateWindowDrawingContext(mw->win); + GHOST_ActivateWindowDrawingContext(mw->win); - mw->size[0] = GHOST_GetWidthRectangle(bounds); - mw->size[1] = GHOST_GetHeightRectangle(bounds); + mw->size[0] = GHOST_GetWidthRectangle(bounds); + mw->size[1] = GHOST_GetHeightRectangle(bounds); - glViewport(0, 0, mw->size[0], mw->size[1]); + glViewport(0, 0, mw->size[0], mw->size[1]); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0, mw->size[0], 0, mw->size[1], -1, 1); - glTranslatef(0.375, 0.375, 0.0); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(0, mw->size[0], 0, mw->size[1], -1, 1); + glTranslatef(0.375, 0.375, 0.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); } static void mainwindow_do_key(MainWindow *mw, GHOST_TKey key, int press) { - switch (key) { - case GHOST_kKeyC: - if (press) - GHOST_SetCursorShape(mw->win, (GHOST_TStandardCursor) (rand() % (GHOST_kStandardCursorNumCursors))); - break; - case GHOST_kKeyLeftBracket: - if (press) - GHOST_SetCursorVisibility(mw->win, 0); - break; - case GHOST_kKeyRightBracket: - if (press) - GHOST_SetCursorVisibility(mw->win, 1); - break; - case GHOST_kKeyE: - if (press) - multitestapp_toggle_extra_window(mw->app); - break; - case GHOST_kKeyQ: - if (press) - multitestapp_exit(mw->app); - break; - case GHOST_kKeyT: - if (press) - mainwindow_log(mw, "TextTest~|`hello`\"world\",<>/"); - break; - case GHOST_kKeyR: - if (press) { - int i; - - mainwindow_log(mw, "Invalidating window 10 times"); - for (i = 0; i < 10; i++) - GHOST_InvalidateWindow(mw->win); - } - break; - case GHOST_kKeyF11: - if (press) { - GHOST_SetWindowOrder(mw->win, GHOST_kWindowOrderBottom); - } - break; - } + switch (key) { + case GHOST_kKeyC: + if (press) + GHOST_SetCursorShape(mw->win, + (GHOST_TStandardCursor)(rand() % (GHOST_kStandardCursorNumCursors))); + break; + case GHOST_kKeyLeftBracket: + if (press) + GHOST_SetCursorVisibility(mw->win, 0); + break; + case GHOST_kKeyRightBracket: + if (press) + GHOST_SetCursorVisibility(mw->win, 1); + break; + case GHOST_kKeyE: + if (press) + multitestapp_toggle_extra_window(mw->app); + break; + case GHOST_kKeyQ: + if (press) + multitestapp_exit(mw->app); + break; + case GHOST_kKeyT: + if (press) + mainwindow_log(mw, "TextTest~|`hello`\"world\",<>/"); + break; + case GHOST_kKeyR: + if (press) { + int i; + + mainwindow_log(mw, "Invalidating window 10 times"); + for (i = 0; i < 10; i++) + GHOST_InvalidateWindow(mw->win); + } + break; + case GHOST_kKeyF11: + if (press) { + GHOST_SetWindowOrder(mw->win, GHOST_kWindowOrderBottom); + } + break; + } } static void mainwindow_do_move(MainWindow *mw, int x, int y) { - mw->lmouse[0] = x, mw->lmouse[1] = y; + mw->lmouse[0] = x, mw->lmouse[1] = y; - if (mw->lmbut[0]) { - mw->tmouse[0] = x, mw->tmouse[1] = y; - GHOST_InvalidateWindow(mw->win); - } + if (mw->lmbut[0]) { + mw->tmouse[0] = x, mw->tmouse[1] = y; + GHOST_InvalidateWindow(mw->win); + } } static void mainwindow_do_button(MainWindow *mw, int which, int press) { - if (which == GHOST_kButtonMaskLeft) { - mw->lmbut[0] = press; - mw->tmouse[0] = mw->lmouse[0], mw->tmouse[1] = mw->lmouse[1]; - GHOST_InvalidateWindow(mw->win); - } - else if (which == GHOST_kButtonMaskLeft) { - mw->lmbut[1] = press; - } - else if (which == GHOST_kButtonMaskLeft) { - mw->lmbut[2] = press; - } + if (which == GHOST_kButtonMaskLeft) { + mw->lmbut[0] = press; + mw->tmouse[0] = mw->lmouse[0], mw->tmouse[1] = mw->lmouse[1]; + GHOST_InvalidateWindow(mw->win); + } + else if (which == GHOST_kButtonMaskLeft) { + mw->lmbut[1] = press; + } + else if (which == GHOST_kButtonMaskLeft) { + mw->lmbut[2] = press; + } } static void mainwindow_handle(void *priv, GHOST_EventHandle evt) { - MainWindow *mw = priv; - GHOST_TEventType type = GHOST_GetEventType(evt); - char buf[256]; - - event_to_buf(evt, buf); - mainwindow_log(mw, buf); - - switch (type) { - case GHOST_kEventCursorMove: - { - GHOST_TEventCursorData *cd = GHOST_GetEventData(evt); - int x, y; - GHOST_ScreenToClient(mw->win, cd->x, cd->y, &x, &y); - mainwindow_do_move(mw, x, mw->size[1] - y - 1); - break; - } - case GHOST_kEventButtonDown: - case GHOST_kEventButtonUp: - { - GHOST_TEventButtonData *bd = GHOST_GetEventData(evt); - mainwindow_do_button(mw, bd->button, (type == GHOST_kEventButtonDown)); - break; - } - case GHOST_kEventKeyDown: - case GHOST_kEventKeyUp: - { - GHOST_TEventKeyData *kd = GHOST_GetEventData(evt); - mainwindow_do_key(mw, kd->key, (type == GHOST_kEventKeyDown)); - break; - } - - case GHOST_kEventWindowUpdate: - mainwindow_do_draw(mw); - break; - case GHOST_kEventWindowSize: - mainwindow_do_reshape(mw); - break; - } + MainWindow *mw = priv; + GHOST_TEventType type = GHOST_GetEventType(evt); + char buf[256]; + + event_to_buf(evt, buf); + mainwindow_log(mw, buf); + + switch (type) { + case GHOST_kEventCursorMove: { + GHOST_TEventCursorData *cd = GHOST_GetEventData(evt); + int x, y; + GHOST_ScreenToClient(mw->win, cd->x, cd->y, &x, &y); + mainwindow_do_move(mw, x, mw->size[1] - y - 1); + break; + } + case GHOST_kEventButtonDown: + case GHOST_kEventButtonUp: { + GHOST_TEventButtonData *bd = GHOST_GetEventData(evt); + mainwindow_do_button(mw, bd->button, (type == GHOST_kEventButtonDown)); + break; + } + case GHOST_kEventKeyDown: + case GHOST_kEventKeyUp: { + GHOST_TEventKeyData *kd = GHOST_GetEventData(evt); + mainwindow_do_key(mw, kd->key, (type == GHOST_kEventKeyDown)); + break; + } + + case GHOST_kEventWindowUpdate: + mainwindow_do_draw(mw); + break; + case GHOST_kEventWindowSize: + mainwindow_do_reshape(mw); + break; + } } /**/ static void mainwindow_timer_proc(GHOST_TimerTaskHandle task, GHOST_TUns64 time) { - MainWindow *mw = GHOST_GetTimerTaskUserData(task); - char buf[64]; + MainWindow *mw = GHOST_GetTimerTaskUserData(task); + char buf[64]; - sprintf(buf, "timer: %6.2f", (double) ((GHOST_TInt64) time) / 1000); - mainwindow_log(mw, buf); + sprintf(buf, "timer: %6.2f", (double)((GHOST_TInt64)time) / 1000); + mainwindow_log(mw, buf); } MainWindow *mainwindow_new(MultiTestApp *app) { - GHOST_SystemHandle sys = multitestapp_get_system(app); - GHOST_WindowHandle win; - GHOST_GLSettings glSettings = {0}; + GHOST_SystemHandle sys = multitestapp_get_system(app); + GHOST_WindowHandle win; + GHOST_GLSettings glSettings = {0}; - win = GHOST_CreateWindow( - sys, "MultiTest:Main", - 40, 40, 400, 400, - GHOST_kWindowStateNormal, - GHOST_kDrawingContextTypeOpenGL, - glSettings); + win = GHOST_CreateWindow(sys, + "MultiTest:Main", + 40, + 40, + 400, + 400, + GHOST_kWindowStateNormal, + GHOST_kDrawingContextTypeOpenGL, + glSettings); - if (win) { - MainWindow *mw = MEM_callocN(sizeof(*mw), "mainwindow_new"); - mw->app = app; - mw->win = win; + if (win) { + MainWindow *mw = MEM_callocN(sizeof(*mw), "mainwindow_new"); + mw->app = app; + mw->win = win; - GHOST_SetWindowUserData(mw->win, windowdata_new(mw, mainwindow_handle)); + GHOST_SetWindowUserData(mw->win, windowdata_new(mw, mainwindow_handle)); - GHOST_InstallTimer(sys, 1000, 10000, mainwindow_timer_proc, mw); + GHOST_InstallTimer(sys, 1000, 10000, mainwindow_timer_proc, mw); - return mw; - } - else { - return NULL; - } + return mw; + } + else { + return NULL; + } } void mainwindow_free(MainWindow *mw) { - GHOST_SystemHandle sys = multitestapp_get_system(mw->app); + GHOST_SystemHandle sys = multitestapp_get_system(mw->app); - windowdata_free(GHOST_GetWindowUserData(mw->win)); - GHOST_DisposeWindow(sys, mw->win); - MEM_freeN(mw); + windowdata_free(GHOST_GetWindowUserData(mw->win)); + GHOST_DisposeWindow(sys, mw->win); + MEM_freeN(mw); } /* @@ -344,29 +345,29 @@ void mainwindow_free(MainWindow *mw) */ struct _LoggerWindow { - MultiTestApp *app; + MultiTestApp *app; - GHOST_WindowHandle win; + GHOST_WindowHandle win; #ifdef USE_BMF - BMF_Font *font; + BMF_Font *font; #else - int font; + int font; #endif - int fonttexid; - int fontheight; + int fonttexid; + int fontheight; - int size[2]; + int size[2]; - int ndisplines; - int textarea[2][2]; - ScrollBar *scroll; + int ndisplines; + int textarea[2][2]; + ScrollBar *scroll; - char **loglines; - int nloglines, logsize; + char **loglines; + int nloglines, logsize; - int lmbut[3]; - int lmouse[2]; + int lmbut[3]; + int lmouse[2]; }; #define SCROLLBAR_PAD 2 @@ -374,443 +375,443 @@ struct _LoggerWindow { #define TEXTAREA_PAD 2 static void loggerwindow_recalc_regions(LoggerWindow *lw) { - int nscroll[2][2]; + int nscroll[2][2]; - nscroll[0][0] = SCROLLBAR_PAD; - nscroll[0][1] = SCROLLBAR_PAD; - nscroll[1][0] = nscroll[0][0] + SCROLLBAR_WIDTH; - nscroll[1][1] = lw->size[1] - SCROLLBAR_PAD - 1; + nscroll[0][0] = SCROLLBAR_PAD; + nscroll[0][1] = SCROLLBAR_PAD; + nscroll[1][0] = nscroll[0][0] + SCROLLBAR_WIDTH; + nscroll[1][1] = lw->size[1] - SCROLLBAR_PAD - 1; - lw->textarea[0][0] = nscroll[1][0] + TEXTAREA_PAD; - lw->textarea[0][1] = TEXTAREA_PAD; - lw->textarea[1][0] = lw->size[0] - TEXTAREA_PAD - 1; - lw->textarea[1][1] = lw->size[1] - TEXTAREA_PAD - 1; + lw->textarea[0][0] = nscroll[1][0] + TEXTAREA_PAD; + lw->textarea[0][1] = TEXTAREA_PAD; + lw->textarea[1][0] = lw->size[0] - TEXTAREA_PAD - 1; + lw->textarea[1][1] = lw->size[1] - TEXTAREA_PAD - 1; - lw->ndisplines = (lw->textarea[1][1] - lw->textarea[0][1]) / lw->fontheight; + lw->ndisplines = (lw->textarea[1][1] - lw->textarea[0][1]) / lw->fontheight; - scrollbar_set_thumbpct(lw->scroll, (float) lw->ndisplines / lw->nloglines); - scrollbar_set_rect(lw->scroll, nscroll); + scrollbar_set_thumbpct(lw->scroll, (float)lw->ndisplines / lw->nloglines); + scrollbar_set_rect(lw->scroll, nscroll); } static void loggerwindow_setup_window_gl(LoggerWindow *lw) { - glViewport(0, 0, lw->size[0], lw->size[1]); + glViewport(0, 0, lw->size[0], lw->size[1]); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0, lw->size[0], 0, lw->size[1], -1, 1); - glTranslatef(0.375, 0.375, 0.0); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(0, lw->size[0], 0, lw->size[1], -1, 1); + glTranslatef(0.375, 0.375, 0.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); } static void loggerwindow_do_reshape(LoggerWindow *lw) { - GHOST_RectangleHandle bounds = GHOST_GetClientBounds(lw->win); + GHOST_RectangleHandle bounds = GHOST_GetClientBounds(lw->win); - GHOST_ActivateWindowDrawingContext(lw->win); + GHOST_ActivateWindowDrawingContext(lw->win); - lw->size[0] = GHOST_GetWidthRectangle(bounds); - lw->size[1] = GHOST_GetHeightRectangle(bounds); + lw->size[0] = GHOST_GetWidthRectangle(bounds); + lw->size[1] = GHOST_GetHeightRectangle(bounds); - loggerwindow_recalc_regions(lw); - loggerwindow_setup_window_gl(lw); + loggerwindow_recalc_regions(lw); + loggerwindow_setup_window_gl(lw); } static void loggerwindow_do_draw(LoggerWindow *lw) { - int i, ndisplines, startline; - int sb_rect[2][2], sb_thumb[2][2]; + int i, ndisplines, startline; + int sb_rect[2][2], sb_thumb[2][2]; - GHOST_ActivateWindowDrawingContext(lw->win); + GHOST_ActivateWindowDrawingContext(lw->win); - glClearColor(1, 1, 1, 1); - glClear(GL_COLOR_BUFFER_BIT); + glClearColor(1, 1, 1, 1); + glClear(GL_COLOR_BUFFER_BIT); - glColor3f(0.8, 0.8, 0.8); - rect_bevel_smooth(lw->textarea, 4); + glColor3f(0.8, 0.8, 0.8); + rect_bevel_smooth(lw->textarea, 4); - scrollbar_get_rect(lw->scroll, sb_rect); - scrollbar_get_thumb(lw->scroll, sb_thumb); + scrollbar_get_rect(lw->scroll, sb_rect); + scrollbar_get_thumb(lw->scroll, sb_thumb); - glColor3f(0.6, 0.6, 0.6); - rect_bevel_smooth(sb_rect, 1); + glColor3f(0.6, 0.6, 0.6); + rect_bevel_smooth(sb_rect, 1); - if (scrollbar_is_scrolling(lw->scroll)) { - glColor3f(0.6, 0.7, 0.5); - } - else { - glColor3f(0.9, 0.9, 0.92); - } - rect_bevel_smooth(sb_thumb, 1); + if (scrollbar_is_scrolling(lw->scroll)) { + glColor3f(0.6, 0.7, 0.5); + } + else { + glColor3f(0.9, 0.9, 0.92); + } + rect_bevel_smooth(sb_thumb, 1); - startline = scrollbar_get_thumbpos(lw->scroll) * (lw->nloglines - 1); - ndisplines = min_i(lw->ndisplines, lw->nloglines - startline); + startline = scrollbar_get_thumbpos(lw->scroll) * (lw->nloglines - 1); + ndisplines = min_i(lw->ndisplines, lw->nloglines - startline); - if (lw->fonttexid != -1) { - glBindTexture(GL_TEXTURE_2D, lw->fonttexid); + if (lw->fonttexid != -1) { + glBindTexture(GL_TEXTURE_2D, lw->fonttexid); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_BLEND); - glEnable(GL_TEXTURE_2D); - } - glColor3f(0, 0, 0); - for (i = 0; i < ndisplines; i++) { - /* stored in reverse order */ - char *line = lw->loglines[(lw->nloglines - 1) - (i + startline)]; - int x_pos = lw->textarea[0][0] + 4; - int y_pos = lw->textarea[0][1] + 4 + i * lw->fontheight; + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + glEnable(GL_TEXTURE_2D); + } + glColor3f(0, 0, 0); + for (i = 0; i < ndisplines; i++) { + /* stored in reverse order */ + char *line = lw->loglines[(lw->nloglines - 1) - (i + startline)]; + int x_pos = lw->textarea[0][0] + 4; + int y_pos = lw->textarea[0][1] + 4 + i * lw->fontheight; #ifdef USE_BMF - if (lw->fonttexid == -1) { - glRasterPos2i(x_pos, y_pos); - BMF_DrawString(lw->font, line); - } - else { - BMF_DrawStringTexture(lw->font, line, x_pos, y_pos, 0.0); - } + if (lw->fonttexid == -1) { + glRasterPos2i(x_pos, y_pos); + BMF_DrawString(lw->font, line); + } + else { + BMF_DrawStringTexture(lw->font, line, x_pos, y_pos, 0.0); + } #else - BLF_position(lw->font, x_pos, y_pos, 0.0); - BLF_draw(lw->font, line, 256); // XXX + BLF_position(lw->font, x_pos, y_pos, 0.0); + BLF_draw(lw->font, line, 256); // XXX #endif - } + } #ifdef USE_BMF - if (lw->fonttexid != -1) { - glDisable(GL_TEXTURE_2D); - glDisable(GL_BLEND); - } + if (lw->fonttexid != -1) { + glDisable(GL_TEXTURE_2D); + glDisable(GL_BLEND); + } #endif - GHOST_SwapWindowBuffers(lw->win); + GHOST_SwapWindowBuffers(lw->win); } static void loggerwindow_do_move(LoggerWindow *lw, int x, int y) { - lw->lmouse[0] = x, lw->lmouse[1] = y; + lw->lmouse[0] = x, lw->lmouse[1] = y; - if (scrollbar_is_scrolling(lw->scroll)) { - scrollbar_keep_scrolling(lw->scroll, y); - GHOST_InvalidateWindow(lw->win); - } + if (scrollbar_is_scrolling(lw->scroll)) { + scrollbar_keep_scrolling(lw->scroll, y); + GHOST_InvalidateWindow(lw->win); + } } static void loggerwindow_do_button(LoggerWindow *lw, int which, int press) { - if (which == GHOST_kButtonMaskLeft) { - lw->lmbut[0] = press; - - if (press) { - if (scrollbar_contains_pt(lw->scroll, lw->lmouse)) { - scrollbar_start_scrolling(lw->scroll, lw->lmouse[1]); - GHOST_SetCursorShape(lw->win, GHOST_kStandardCursorUpDown); - GHOST_InvalidateWindow(lw->win); - } - } - else { - if (scrollbar_is_scrolling(lw->scroll)) { - scrollbar_stop_scrolling(lw->scroll); - GHOST_SetCursorShape(lw->win, GHOST_kStandardCursorDefault); - GHOST_InvalidateWindow(lw->win); - } - } - } - else if (which == GHOST_kButtonMaskMiddle) { - lw->lmbut[1] = press; - } - else if (which == GHOST_kButtonMaskRight) { - lw->lmbut[2] = press; - } + if (which == GHOST_kButtonMaskLeft) { + lw->lmbut[0] = press; + + if (press) { + if (scrollbar_contains_pt(lw->scroll, lw->lmouse)) { + scrollbar_start_scrolling(lw->scroll, lw->lmouse[1]); + GHOST_SetCursorShape(lw->win, GHOST_kStandardCursorUpDown); + GHOST_InvalidateWindow(lw->win); + } + } + else { + if (scrollbar_is_scrolling(lw->scroll)) { + scrollbar_stop_scrolling(lw->scroll); + GHOST_SetCursorShape(lw->win, GHOST_kStandardCursorDefault); + GHOST_InvalidateWindow(lw->win); + } + } + } + else if (which == GHOST_kButtonMaskMiddle) { + lw->lmbut[1] = press; + } + else if (which == GHOST_kButtonMaskRight) { + lw->lmbut[2] = press; + } } static void loggerwindow_do_key(LoggerWindow *lw, GHOST_TKey key, int press) { - switch (key) { - case GHOST_kKeyQ: - if (press) - multitestapp_exit(lw->app); - break; - } + switch (key) { + case GHOST_kKeyQ: + if (press) + multitestapp_exit(lw->app); + break; + } } static void loggerwindow_handle(void *priv, GHOST_EventHandle evt) { - LoggerWindow *lw = priv; - GHOST_TEventType type = GHOST_GetEventType(evt); - - switch (type) { - case GHOST_kEventCursorMove: - { - GHOST_TEventCursorData *cd = GHOST_GetEventData(evt); - int x, y; - GHOST_ScreenToClient(lw->win, cd->x, cd->y, &x, &y); - loggerwindow_do_move(lw, x, lw->size[1] - y - 1); - break; - } - case GHOST_kEventButtonDown: - case GHOST_kEventButtonUp: - { - GHOST_TEventButtonData *bd = GHOST_GetEventData(evt); - loggerwindow_do_button(lw, bd->button, (type == GHOST_kEventButtonDown)); - break; - } - case GHOST_kEventKeyDown: - case GHOST_kEventKeyUp: - { - GHOST_TEventKeyData *kd = GHOST_GetEventData(evt); - loggerwindow_do_key(lw, kd->key, (type == GHOST_kEventKeyDown)); - break; - } - - case GHOST_kEventWindowUpdate: - loggerwindow_do_draw(lw); - break; - case GHOST_kEventWindowSize: - loggerwindow_do_reshape(lw); - break; - } + LoggerWindow *lw = priv; + GHOST_TEventType type = GHOST_GetEventType(evt); + + switch (type) { + case GHOST_kEventCursorMove: { + GHOST_TEventCursorData *cd = GHOST_GetEventData(evt); + int x, y; + GHOST_ScreenToClient(lw->win, cd->x, cd->y, &x, &y); + loggerwindow_do_move(lw, x, lw->size[1] - y - 1); + break; + } + case GHOST_kEventButtonDown: + case GHOST_kEventButtonUp: { + GHOST_TEventButtonData *bd = GHOST_GetEventData(evt); + loggerwindow_do_button(lw, bd->button, (type == GHOST_kEventButtonDown)); + break; + } + case GHOST_kEventKeyDown: + case GHOST_kEventKeyUp: { + GHOST_TEventKeyData *kd = GHOST_GetEventData(evt); + loggerwindow_do_key(lw, kd->key, (type == GHOST_kEventKeyDown)); + break; + } + + case GHOST_kEventWindowUpdate: + loggerwindow_do_draw(lw); + break; + case GHOST_kEventWindowSize: + loggerwindow_do_reshape(lw); + break; + } } /**/ LoggerWindow *loggerwindow_new(MultiTestApp *app) { - GHOST_GLSettings glSettings = {0}; - GHOST_SystemHandle sys = multitestapp_get_system(app); - GHOST_TUns32 screensize[2]; - GHOST_WindowHandle win; - - GHOST_GetMainDisplayDimensions(sys, &screensize[0], &screensize[1]); - win = GHOST_CreateWindow( - sys, "MultiTest:Logger", - 40, screensize[1] - 432, 800, 300, - GHOST_kWindowStateNormal, - GHOST_kDrawingContextTypeOpenGL, - glSettings); - - if (win) { - LoggerWindow *lw = MEM_callocN(sizeof(*lw), "loggerwindow_new"); - int bbox[2][2]; - lw->app = app; - lw->win = win; + GHOST_GLSettings glSettings = {0}; + GHOST_SystemHandle sys = multitestapp_get_system(app); + GHOST_TUns32 screensize[2]; + GHOST_WindowHandle win; + + GHOST_GetMainDisplayDimensions(sys, &screensize[0], &screensize[1]); + win = GHOST_CreateWindow(sys, + "MultiTest:Logger", + 40, + screensize[1] - 432, + 800, + 300, + GHOST_kWindowStateNormal, + GHOST_kDrawingContextTypeOpenGL, + glSettings); + + if (win) { + LoggerWindow *lw = MEM_callocN(sizeof(*lw), "loggerwindow_new"); + int bbox[2][2]; + lw->app = app; + lw->win = win; #ifdef USE_BMF - lw->font = BMF_GetFont(BMF_kScreen12); - lw->fonttexid = BMF_GetFontTexture(lw->font); + lw->font = BMF_GetFont(BMF_kScreen12); + lw->fonttexid = BMF_GetFontTexture(lw->font); - BMF_GetBoundingBox(lw->font, &bbox[0][0], &bbox[0][1], &bbox[1][0], &bbox[1][1]); - lw->fontheight = rect_height(bbox); + BMF_GetBoundingBox(lw->font, &bbox[0][0], &bbox[0][1], &bbox[1][0], &bbox[1][1]); + lw->fontheight = rect_height(bbox); #else - lw->font = BLF_load_mem("default", (unsigned char *)datatoc_bfont_ttf, datatoc_bfont_ttf_size); - BLF_size(lw->font, 11, 72); - lw->fontheight = BLF_height(lw->font, "A_", 2); + lw->font = BLF_load_mem("default", (unsigned char *)datatoc_bfont_ttf, datatoc_bfont_ttf_size); + BLF_size(lw->font, 11, 72); + lw->fontheight = BLF_height(lw->font, "A_", 2); #endif - lw->nloglines = lw->logsize = 0; - lw->loglines = MEM_mallocN(sizeof(*lw->loglines) * lw->nloglines, "loglines"); + lw->nloglines = lw->logsize = 0; + lw->loglines = MEM_mallocN(sizeof(*lw->loglines) * lw->nloglines, "loglines"); - lw->scroll = scrollbar_new(2, 40); + lw->scroll = scrollbar_new(2, 40); - GHOST_SetWindowUserData(lw->win, windowdata_new(lw, loggerwindow_handle)); + GHOST_SetWindowUserData(lw->win, windowdata_new(lw, loggerwindow_handle)); - loggerwindow_do_reshape(lw); + loggerwindow_do_reshape(lw); - return lw; - } - else { - return NULL; - } + return lw; + } + else { + return NULL; + } } void loggerwindow_log(LoggerWindow *lw, char *line) { - if (lw->nloglines == lw->logsize) { - lw->loglines = memdbl(lw->loglines, &lw->logsize, sizeof(*lw->loglines)); - } + if (lw->nloglines == lw->logsize) { + lw->loglines = memdbl(lw->loglines, &lw->logsize, sizeof(*lw->loglines)); + } - lw->loglines[lw->nloglines++] = string_dup(line); - scrollbar_set_thumbpct(lw->scroll, (float) lw->ndisplines / lw->nloglines); + lw->loglines[lw->nloglines++] = string_dup(line); + scrollbar_set_thumbpct(lw->scroll, (float)lw->ndisplines / lw->nloglines); - GHOST_InvalidateWindow(lw->win); + GHOST_InvalidateWindow(lw->win); } void loggerwindow_free(LoggerWindow *lw) { - GHOST_SystemHandle sys = multitestapp_get_system(lw->app); - int i; + GHOST_SystemHandle sys = multitestapp_get_system(lw->app); + int i; - for (i = 0; i < lw->nloglines; i++) { - MEM_freeN(lw->loglines[i]); - } - MEM_freeN(lw->loglines); + for (i = 0; i < lw->nloglines; i++) { + MEM_freeN(lw->loglines[i]); + } + MEM_freeN(lw->loglines); - windowdata_free(GHOST_GetWindowUserData(lw->win)); - GHOST_DisposeWindow(sys, lw->win); - MEM_freeN(lw); + windowdata_free(GHOST_GetWindowUserData(lw->win)); + GHOST_DisposeWindow(sys, lw->win); + MEM_freeN(lw); } /* * ExtraWindow */ - typedef struct { - MultiTestApp *app; + MultiTestApp *app; - GHOST_WindowHandle win; + GHOST_WindowHandle win; - int size[2]; + int size[2]; } ExtraWindow; static void extrawindow_do_draw(ExtraWindow *ew) { - GHOST_ActivateWindowDrawingContext(ew->win); + GHOST_ActivateWindowDrawingContext(ew->win); - glClearColor(1, 1, 1, 1); - glClear(GL_COLOR_BUFFER_BIT); + glClearColor(1, 1, 1, 1); + glClear(GL_COLOR_BUFFER_BIT); - glColor3f(0.8, 0.8, 0.8); - glRecti(10, 10, ew->size[0] - 10, ew->size[1] - 10); + glColor3f(0.8, 0.8, 0.8); + glRecti(10, 10, ew->size[0] - 10, ew->size[1] - 10); - GHOST_SwapWindowBuffers(ew->win); + GHOST_SwapWindowBuffers(ew->win); } static void extrawindow_do_reshape(ExtraWindow *ew) { - GHOST_RectangleHandle bounds = GHOST_GetClientBounds(ew->win); + GHOST_RectangleHandle bounds = GHOST_GetClientBounds(ew->win); - GHOST_ActivateWindowDrawingContext(ew->win); + GHOST_ActivateWindowDrawingContext(ew->win); - ew->size[0] = GHOST_GetWidthRectangle(bounds); - ew->size[1] = GHOST_GetHeightRectangle(bounds); + ew->size[0] = GHOST_GetWidthRectangle(bounds); + ew->size[1] = GHOST_GetHeightRectangle(bounds); - glViewport(0, 0, ew->size[0], ew->size[1]); + glViewport(0, 0, ew->size[0], ew->size[1]); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0, ew->size[0], 0, ew->size[1], -1, 1); - glTranslatef(0.375, 0.375, 0.0); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(0, ew->size[0], 0, ew->size[1], -1, 1); + glTranslatef(0.375, 0.375, 0.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); } static void extrawindow_do_key(ExtraWindow *ew, GHOST_TKey key, int press) { - switch (key) { - case GHOST_kKeyE: - if (press) - multitestapp_toggle_extra_window(ew->app); - break; - } + switch (key) { + case GHOST_kKeyE: + if (press) + multitestapp_toggle_extra_window(ew->app); + break; + } } static void extrawindow_spin_cursor(ExtraWindow *ew, GHOST_TUns64 time) { - GHOST_TUns8 bitmap[16][2]; - GHOST_TUns8 mask[16][2]; - double ftime = (double) ((GHOST_TInt64) time) / 1000; - float angle = fmod(ftime, 1.0) * 3.1415 * 2; - int i; + GHOST_TUns8 bitmap[16][2]; + GHOST_TUns8 mask[16][2]; + double ftime = (double)((GHOST_TInt64)time) / 1000; + float angle = fmod(ftime, 1.0) * 3.1415 * 2; + int i; - memset(&bitmap, 0, sizeof(bitmap)); - memset(&mask, 0, sizeof(mask)); + memset(&bitmap, 0, sizeof(bitmap)); + memset(&mask, 0, sizeof(mask)); - bitmap[0][0] |= mask[0][0] |= 0xF; - bitmap[1][0] |= mask[1][0] |= 0xF; - bitmap[2][0] |= mask[2][0] |= 0xF; - bitmap[3][0] |= mask[3][0] |= 0xF; + bitmap[0][0] |= mask[0][0] |= 0xF; + bitmap[1][0] |= mask[1][0] |= 0xF; + bitmap[2][0] |= mask[2][0] |= 0xF; + bitmap[3][0] |= mask[3][0] |= 0xF; - for (i = 0; i < 7; i++) { - int x = 7 + cos(angle) * i; - int y = 7 + sin(angle) * i; + for (i = 0; i < 7; i++) { + int x = 7 + cos(angle) * i; + int y = 7 + sin(angle) * i; - mask[y][x / 8] |= (1 << (x % 8)); - } - for (i = 0; i < 64; i++) { - float v = (i / 63.0) * 3.1415 * 2; - int x = 7 + cos(v) * 7; - int y = 7 + sin(v) * 7; + mask[y][x / 8] |= (1 << (x % 8)); + } + for (i = 0; i < 64; i++) { + float v = (i / 63.0) * 3.1415 * 2; + int x = 7 + cos(v) * 7; + int y = 7 + sin(v) * 7; - mask[y][x / 8] |= (1 << (x % 8)); - } + mask[y][x / 8] |= (1 << (x % 8)); + } - GHOST_SetCustomCursorShape(ew->win, bitmap, mask, 0, 0); + GHOST_SetCustomCursorShape(ew->win, bitmap, mask, 0, 0); } static void extrawindow_handle(void *priv, GHOST_EventHandle evt) { - ExtraWindow *ew = priv; - GHOST_TEventType type = GHOST_GetEventType(evt); - char buf[256]; - - event_to_buf(evt, buf); - loggerwindow_log(multitestapp_get_logger(ew->app), buf); - - switch (type) { - case GHOST_kEventKeyDown: - case GHOST_kEventKeyUp: - { - GHOST_TEventKeyData *kd = GHOST_GetEventData(evt); - extrawindow_do_key(ew, kd->key, (type == GHOST_kEventKeyDown)); - break; - } - - case GHOST_kEventCursorMove: - { - extrawindow_spin_cursor(ew, GHOST_GetEventTime(evt)); - break; - } - - case GHOST_kEventWindowClose: - multitestapp_free_extrawindow(ew->app); - break; - case GHOST_kEventWindowUpdate: - extrawindow_do_draw(ew); - break; - case GHOST_kEventWindowSize: - extrawindow_do_reshape(ew); - break; - } + ExtraWindow *ew = priv; + GHOST_TEventType type = GHOST_GetEventType(evt); + char buf[256]; + + event_to_buf(evt, buf); + loggerwindow_log(multitestapp_get_logger(ew->app), buf); + + switch (type) { + case GHOST_kEventKeyDown: + case GHOST_kEventKeyUp: { + GHOST_TEventKeyData *kd = GHOST_GetEventData(evt); + extrawindow_do_key(ew, kd->key, (type == GHOST_kEventKeyDown)); + break; + } + + case GHOST_kEventCursorMove: { + extrawindow_spin_cursor(ew, GHOST_GetEventTime(evt)); + break; + } + + case GHOST_kEventWindowClose: + multitestapp_free_extrawindow(ew->app); + break; + case GHOST_kEventWindowUpdate: + extrawindow_do_draw(ew); + break; + case GHOST_kEventWindowSize: + extrawindow_do_reshape(ew); + break; + } } /**/ ExtraWindow *extrawindow_new(MultiTestApp *app) { - GHOST_GLSettings glSettings = {0}; - GHOST_SystemHandle sys = multitestapp_get_system(app); - GHOST_WindowHandle win; + GHOST_GLSettings glSettings = {0}; + GHOST_SystemHandle sys = multitestapp_get_system(app); + GHOST_WindowHandle win; - win = GHOST_CreateWindow( - sys, "MultiTest:Extra", - 500, 40, 400, 400, - GHOST_kWindowStateNormal, - GHOST_kDrawingContextTypeOpenGL, - glSettings); + win = GHOST_CreateWindow(sys, + "MultiTest:Extra", + 500, + 40, + 400, + 400, + GHOST_kWindowStateNormal, + GHOST_kDrawingContextTypeOpenGL, + glSettings); - if (win) { - ExtraWindow *ew = MEM_callocN(sizeof(*ew), "mainwindow_new"); - ew->app = app; - ew->win = win; + if (win) { + ExtraWindow *ew = MEM_callocN(sizeof(*ew), "mainwindow_new"); + ew->app = app; + ew->win = win; - GHOST_SetWindowUserData(ew->win, windowdata_new(ew, extrawindow_handle)); + GHOST_SetWindowUserData(ew->win, windowdata_new(ew, extrawindow_handle)); - return ew; - } - else { - return NULL; - } + return ew; + } + else { + return NULL; + } } void extrawindow_free(ExtraWindow *ew) { - GHOST_SystemHandle sys = multitestapp_get_system(ew->app); + GHOST_SystemHandle sys = multitestapp_get_system(ew->app); - windowdata_free(GHOST_GetWindowUserData(ew->win)); - GHOST_DisposeWindow(sys, ew->win); - MEM_freeN(ew); + windowdata_free(GHOST_GetWindowUserData(ew->win)); + GHOST_DisposeWindow(sys, ew->win); + MEM_freeN(ew); } /* @@ -818,136 +819,139 @@ void extrawindow_free(ExtraWindow *ew) */ struct _MultiTestApp { - GHOST_SystemHandle sys; - MainWindow *main; - LoggerWindow *logger; - ExtraWindow *extra; + GHOST_SystemHandle sys; + MainWindow *main; + LoggerWindow *logger; + ExtraWindow *extra; - int exit; + int exit; }; static int multitest_event_handler(GHOST_EventHandle evt, GHOST_TUserDataPtr data) { - MultiTestApp *app = data; - GHOST_WindowHandle win; + MultiTestApp *app = data; + GHOST_WindowHandle win; - win = GHOST_GetEventWindow(evt); - if (win && !GHOST_ValidWindow(app->sys, win)) { - loggerwindow_log(app->logger, "WARNING: bad event, non-valid window\n"); - return 1; - } + win = GHOST_GetEventWindow(evt); + if (win && !GHOST_ValidWindow(app->sys, win)) { + loggerwindow_log(app->logger, "WARNING: bad event, non-valid window\n"); + return 1; + } - if (win) { - WindowData *wb = GHOST_GetWindowUserData(win); + if (win) { + WindowData *wb = GHOST_GetWindowUserData(win); - windowdata_handle(wb, evt); - } - else { - GHOST_TEventType type = GHOST_GetEventType(evt); + windowdata_handle(wb, evt); + } + else { + GHOST_TEventType type = GHOST_GetEventType(evt); - /* GHOST_kEventQuit are the only 'system' events, - * that is, events without a window. - */ - switch (type) { - case GHOST_kEventQuit: - app->exit = 1; - break; + /* GHOST_kEventQuit are the only 'system' events, + * that is, events without a window. + */ + switch (type) { + case GHOST_kEventQuit: + app->exit = 1; + break; - default: - fatal("Unhandled system event: %d (%s)\n", type, eventtype_to_string(type)); - break; - } - } + default: + fatal("Unhandled system event: %d (%s)\n", type, eventtype_to_string(type)); + break; + } + } - return 1; + return 1; } /**/ -MultiTestApp *multitestapp_new(void) { - MultiTestApp *app = MEM_mallocN(sizeof(*app), "multitestapp_new"); - GHOST_EventConsumerHandle consumer = GHOST_CreateEventConsumer(multitest_event_handler, app); +MultiTestApp *multitestapp_new(void) +{ + MultiTestApp *app = MEM_mallocN(sizeof(*app), "multitestapp_new"); + GHOST_EventConsumerHandle consumer = GHOST_CreateEventConsumer(multitest_event_handler, app); - app->sys = GHOST_CreateSystem(); - if (!app->sys) - fatal("Unable to create ghost system"); + app->sys = GHOST_CreateSystem(); + if (!app->sys) + fatal("Unable to create ghost system"); - if (!GHOST_AddEventConsumer(app->sys, consumer)) - fatal("Unable to add multitest event consumer "); + if (!GHOST_AddEventConsumer(app->sys, consumer)) + fatal("Unable to add multitest event consumer "); - app->main = mainwindow_new(app); - if (!app->main) - fatal("Unable to create main window"); + app->main = mainwindow_new(app); + if (!app->main) + fatal("Unable to create main window"); - app->logger = loggerwindow_new(app); - if (!app->logger) - fatal("Unable to create logger window"); + app->logger = loggerwindow_new(app); + if (!app->logger) + fatal("Unable to create logger window"); - app->extra = NULL; - app->exit = 0; + app->extra = NULL; + app->exit = 0; - return app; + return app; } -LoggerWindow *multitestapp_get_logger(MultiTestApp *app) { - return app->logger; +LoggerWindow *multitestapp_get_logger(MultiTestApp *app) +{ + return app->logger; } -GHOST_SystemHandle multitestapp_get_system(MultiTestApp *app) { - return app->sys; +GHOST_SystemHandle multitestapp_get_system(MultiTestApp *app) +{ + return app->sys; } void multitestapp_free_extrawindow(MultiTestApp *app) { - extrawindow_free(app->extra); - app->extra = NULL; + extrawindow_free(app->extra); + app->extra = NULL; } void multitestapp_toggle_extra_window(MultiTestApp *app) { - if (app->extra) { - multitestapp_free_extrawindow(app); - } - else { - app->extra = extrawindow_new(app); - } + if (app->extra) { + multitestapp_free_extrawindow(app); + } + else { + app->extra = extrawindow_new(app); + } } void multitestapp_exit(MultiTestApp *app) { - app->exit = 1; + app->exit = 1; } void multitestapp_run(MultiTestApp *app) { - while (!app->exit) { - GHOST_ProcessEvents(app->sys, 1); - GHOST_DispatchEvents(app->sys); - } + while (!app->exit) { + GHOST_ProcessEvents(app->sys, 1); + GHOST_DispatchEvents(app->sys); + } } void multitestapp_free(MultiTestApp *app) { - mainwindow_free(app->main); - loggerwindow_free(app->logger); - GHOST_DisposeSystem(app->sys); - MEM_freeN(app); + mainwindow_free(app->main); + loggerwindow_free(app->logger); + GHOST_DisposeSystem(app->sys); + MEM_freeN(app); } /***/ int main(int argc, char **argv) { - MultiTestApp *app; + MultiTestApp *app; #ifndef USE_BMF - BLF_init(); + BLF_init(); #endif - app = multitestapp_new(); + app = multitestapp_new(); - multitestapp_run(app); - multitestapp_free(app); + multitestapp_run(app); + multitestapp_free(app); - return 0; + return 0; } diff --git a/intern/ghost/test/multitest/ScrollBar.c b/intern/ghost/test/multitest/ScrollBar.c index fbc3ab2f967..f14e726a077 100644 --- a/intern/ghost/test/multitest/ScrollBar.c +++ b/intern/ghost/test/multitest/ScrollBar.c @@ -27,125 +27,125 @@ #include "ScrollBar.h" struct _ScrollBar { - int rect[2][2]; - float thumbpos, thumbpct; + int rect[2][2]; + float thumbpos, thumbpct; - int inset; - int minthumb; + int inset; + int minthumb; - int scrolling; - float scrolloffs; + int scrolling; + float scrolloffs; }; static int scrollbar_get_thumbH(ScrollBar *sb) { - int scrollable_h = rect_height(sb->rect) - 2 * sb->inset; + int scrollable_h = rect_height(sb->rect) - 2 * sb->inset; - return clamp_i(sb->thumbpct * scrollable_h, sb->minthumb, scrollable_h); + return clamp_i(sb->thumbpct * scrollable_h, sb->minthumb, scrollable_h); } static int scrollbar_get_thumbableH(ScrollBar *sb) { - int scrollable_h = rect_height(sb->rect) - 2 * sb->inset; - int thumb_h = scrollbar_get_thumbH(sb); + int scrollable_h = rect_height(sb->rect) - 2 * sb->inset; + int thumb_h = scrollbar_get_thumbH(sb); - return scrollable_h - thumb_h; + return scrollable_h - thumb_h; } static float scrollbar_co_to_pos(ScrollBar *sb, int yco) { - int thumb_h = scrollbar_get_thumbH(sb); - int thumbable_h = scrollbar_get_thumbableH(sb); - int thumbable_y = (sb->rect[0][1] + sb->inset) + thumb_h / 2; + int thumb_h = scrollbar_get_thumbH(sb); + int thumbable_h = scrollbar_get_thumbableH(sb); + int thumbable_y = (sb->rect[0][1] + sb->inset) + thumb_h / 2; - return (float) (yco - thumbable_y) / thumbable_h; + return (float)(yco - thumbable_y) / thumbable_h; } /**/ ScrollBar *scrollbar_new(int inset, int minthumb) { - ScrollBar *sb = MEM_callocN(sizeof(*sb), "scrollbar_new"); - sb->inset = inset; - sb->minthumb = minthumb; + ScrollBar *sb = MEM_callocN(sizeof(*sb), "scrollbar_new"); + sb->inset = inset; + sb->minthumb = minthumb; - return sb; + return sb; } void scrollbar_get_thumb(ScrollBar *sb, int thumb_r[2][2]) { - int thumb_h = scrollbar_get_thumbH(sb); - int thumbable_h = scrollbar_get_thumbableH(sb); + int thumb_h = scrollbar_get_thumbH(sb); + int thumbable_h = scrollbar_get_thumbableH(sb); - thumb_r[0][0] = sb->rect[0][0] + sb->inset; - thumb_r[1][0] = sb->rect[1][0] - sb->inset; + thumb_r[0][0] = sb->rect[0][0] + sb->inset; + thumb_r[1][0] = sb->rect[1][0] - sb->inset; - thumb_r[0][1] = sb->rect[0][1] + sb->inset + sb->thumbpos * thumbable_h; - thumb_r[1][1] = thumb_r[0][1] + thumb_h; + thumb_r[0][1] = sb->rect[0][1] + sb->inset + sb->thumbpos * thumbable_h; + thumb_r[1][1] = thumb_r[0][1] + thumb_h; } int scrollbar_is_scrolling(ScrollBar *sb) { - return sb->scrolling; + return sb->scrolling; } int scrollbar_contains_pt(ScrollBar *sb, int pt[2]) { - return rect_contains_pt(sb->rect, pt); + return rect_contains_pt(sb->rect, pt); } void scrollbar_start_scrolling(ScrollBar *sb, int yco) { - int thumb_h_2 = scrollbar_get_thumbH(sb) / 2; - int thumbable_h = scrollbar_get_thumbableH(sb); - float npos = scrollbar_co_to_pos(sb, yco); + int thumb_h_2 = scrollbar_get_thumbH(sb) / 2; + int thumbable_h = scrollbar_get_thumbableH(sb); + float npos = scrollbar_co_to_pos(sb, yco); - sb->scrolloffs = sb->thumbpos - npos; - if (fabs(sb->scrolloffs) >= (float) thumb_h_2 / thumbable_h) { - sb->scrolloffs = 0.0; - } + sb->scrolloffs = sb->thumbpos - npos; + if (fabs(sb->scrolloffs) >= (float)thumb_h_2 / thumbable_h) { + sb->scrolloffs = 0.0; + } - sb->scrolling = 1; - sb->thumbpos = clamp_f(npos + sb->scrolloffs, 0.0, 1.0); + sb->scrolling = 1; + sb->thumbpos = clamp_f(npos + sb->scrolloffs, 0.0, 1.0); } void scrollbar_keep_scrolling(ScrollBar *sb, int yco) { - float npos = scrollbar_co_to_pos(sb, yco); + float npos = scrollbar_co_to_pos(sb, yco); - sb->thumbpos = clamp_f(npos + sb->scrolloffs, 0.0, 1.0); + sb->thumbpos = clamp_f(npos + sb->scrolloffs, 0.0, 1.0); } void scrollbar_stop_scrolling(ScrollBar *sb) { - sb->scrolling = 0; - sb->scrolloffs = 0.0; + sb->scrolling = 0; + sb->scrolloffs = 0.0; } void scrollbar_set_thumbpct(ScrollBar *sb, float pct) { - sb->thumbpct = pct; + sb->thumbpct = pct; } void scrollbar_set_thumbpos(ScrollBar *sb, float pos) { - sb->thumbpos = clamp_f(pos, 0.0, 1.0); + sb->thumbpos = clamp_f(pos, 0.0, 1.0); } void scrollbar_set_rect(ScrollBar *sb, int rect[2][2]) { - rect_copy(sb->rect, rect); + rect_copy(sb->rect, rect); } float scrollbar_get_thumbpct(ScrollBar *sb) { - return sb->thumbpct; + return sb->thumbpct; } float scrollbar_get_thumbpos(ScrollBar *sb) { - return sb->thumbpos; + return sb->thumbpos; } void scrollbar_get_rect(ScrollBar *sb, int rect_r[2][2]) { - rect_copy(rect_r, sb->rect); + rect_copy(rect_r, sb->rect); } void scrollbar_free(ScrollBar *sb) { - MEM_freeN(sb); + MEM_freeN(sb); } diff --git a/intern/ghost/test/multitest/ScrollBar.h b/intern/ghost/test/multitest/ScrollBar.h index 015af7a1e07..7108f9ce2df 100644 --- a/intern/ghost/test/multitest/ScrollBar.h +++ b/intern/ghost/test/multitest/ScrollBar.h @@ -19,26 +19,25 @@ typedef struct _ScrollBar ScrollBar; +/***/ - /***/ +ScrollBar *scrollbar_new(int inset, int minthumb); -ScrollBar* scrollbar_new (int inset, int minthumb); +int scrollbar_is_scrolling(ScrollBar *sb); +int scrollbar_contains_pt(ScrollBar *sb, int pt[2]); -int scrollbar_is_scrolling (ScrollBar *sb); -int scrollbar_contains_pt (ScrollBar *sb, int pt[2]); +void scrollbar_start_scrolling(ScrollBar *sb, int yco); +void scrollbar_keep_scrolling(ScrollBar *sb, int yco); +void scrollbar_stop_scrolling(ScrollBar *sb); -void scrollbar_start_scrolling (ScrollBar *sb, int yco); -void scrollbar_keep_scrolling (ScrollBar *sb, int yco); -void scrollbar_stop_scrolling (ScrollBar *sb); +void scrollbar_set_thumbpct(ScrollBar *sb, float pct); +void scrollbar_set_thumbpos(ScrollBar *sb, float pos); +void scrollbar_set_rect(ScrollBar *sb, int rect[2][2]); -void scrollbar_set_thumbpct (ScrollBar *sb, float pct); -void scrollbar_set_thumbpos (ScrollBar *sb, float pos); -void scrollbar_set_rect (ScrollBar *sb, int rect[2][2]); +float scrollbar_get_thumbpct(ScrollBar *sb); +float scrollbar_get_thumbpos(ScrollBar *sb); +void scrollbar_get_rect(ScrollBar *sb, int rect_r[2][2]); -float scrollbar_get_thumbpct (ScrollBar *sb); -float scrollbar_get_thumbpos (ScrollBar *sb); -void scrollbar_get_rect (ScrollBar *sb, int rect_r[2][2]); +void scrollbar_get_thumb(ScrollBar *sb, int thumb_r[2][2]); -void scrollbar_get_thumb (ScrollBar *sb, int thumb_r[2][2]); - -void scrollbar_free (ScrollBar *sb); +void scrollbar_free(ScrollBar *sb); diff --git a/intern/ghost/test/multitest/Util.c b/intern/ghost/test/multitest/Util.c index abaeb4407dc..c6cdebd39ce 100644 --- a/intern/ghost/test/multitest/Util.c +++ b/intern/ghost/test/multitest/Util.c @@ -29,36 +29,36 @@ void *memdbl(void *mem, int *size_pr, int item_size) { - int cur_size = *size_pr; - int new_size = cur_size ? (cur_size * 2) : 1; - void *nmem = MEM_mallocN(new_size * item_size, "memdbl"); + int cur_size = *size_pr; + int new_size = cur_size ? (cur_size * 2) : 1; + void *nmem = MEM_mallocN(new_size * item_size, "memdbl"); - memcpy(nmem, mem, cur_size * item_size); - MEM_freeN(mem); + memcpy(nmem, mem, cur_size * item_size); + MEM_freeN(mem); - *size_pr = new_size; - return nmem; + *size_pr = new_size; + return nmem; } char *string_dup(char *str) { - int len = strlen(str); - char *nstr = MEM_mallocN(len + 1, "string_dup"); + int len = strlen(str); + char *nstr = MEM_mallocN(len + 1, "string_dup"); - memcpy(nstr, str, len + 1); + memcpy(nstr, str, len + 1); - return nstr; + return nstr; } void fatal(char *fmt, ...) { - va_list ap; + va_list ap; - fprintf(stderr, "FATAL: "); - va_start(ap, fmt); - vfprintf(stderr, fmt, ap); - va_end(ap); - fprintf(stderr, "\n"); + fprintf(stderr, "FATAL: "); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + fprintf(stderr, "\n"); - exit(1); + exit(1); } diff --git a/intern/ghost/test/multitest/Util.h b/intern/ghost/test/multitest/Util.h index 5bd8f84b35f..24f963a6d89 100644 --- a/intern/ghost/test/multitest/Util.h +++ b/intern/ghost/test/multitest/Util.h @@ -17,7 +17,7 @@ * All rights reserved. */ -void* memdbl (void *mem, int *size_pr, int item_size); +void *memdbl(void *mem, int *size_pr, int item_size); -char* string_dup (char *str); -void fatal (char *fmt, ...); +char *string_dup(char *str); +void fatal(char *fmt, ...); diff --git a/intern/ghost/test/multitest/WindowData.c b/intern/ghost/test/multitest/WindowData.c index ea341ffa3be..7d3cbec43f3 100644 --- a/intern/ghost/test/multitest/WindowData.c +++ b/intern/ghost/test/multitest/WindowData.c @@ -26,25 +26,25 @@ #include "WindowData.h" struct _WindowData { - void *data; - WindowDataHandler handler; + void *data; + WindowDataHandler handler; }; WindowData *windowdata_new(void *data, WindowDataHandler handler) { - WindowData *wb = MEM_mallocN(sizeof(*wb), "windowdata_new"); - wb->data = data; - wb->handler = handler; + WindowData *wb = MEM_mallocN(sizeof(*wb), "windowdata_new"); + wb->data = data; + wb->handler = handler; - return wb; + return wb; } void windowdata_handle(WindowData *wb, GHOST_EventHandle evt) { - wb->handler(wb->data, evt); + wb->handler(wb->data, evt); } void windowdata_free(WindowData *wb) { - MEM_freeN(wb); + MEM_freeN(wb); } diff --git a/intern/ghost/test/multitest/WindowData.h b/intern/ghost/test/multitest/WindowData.h index 073da0dad2b..9d39377bb0a 100644 --- a/intern/ghost/test/multitest/WindowData.h +++ b/intern/ghost/test/multitest/WindowData.h @@ -20,8 +20,8 @@ typedef void (*WindowDataHandler)(void *priv, GHOST_EventHandle evt); typedef struct _WindowData WindowData; - /***/ +/***/ -WindowData* windowdata_new (void *data, WindowDataHandler handler); -void windowdata_handle (WindowData *wb, GHOST_EventHandle evt); -void windowdata_free (WindowData *wb); +WindowData *windowdata_new(void *data, WindowDataHandler handler); +void windowdata_handle(WindowData *wb, GHOST_EventHandle evt); +void windowdata_free(WindowData *wb); diff --git a/intern/ghost/test/multitest/stubs.c b/intern/ghost/test/multitest/stubs.c index ad4b9812e98..f0b076eeba0 100644 --- a/intern/ghost/test/multitest/stubs.c +++ b/intern/ghost/test/multitest/stubs.c @@ -24,5 +24,10 @@ struct ImBuf; -void IMB_freeImBuf(struct ImBuf *UNUSED(ibuf)) {} -void IMB_colormanagement_display_to_scene_linear_v3(float UNUSED(pixel[3]), struct ColorManagedDisplay *UNUSED(display)) {} +void IMB_freeImBuf(struct ImBuf *UNUSED(ibuf)) +{ +} +void IMB_colormanagement_display_to_scene_linear_v3(float UNUSED(pixel[3]), + struct ColorManagedDisplay *UNUSED(display)) +{ +} |