--- /dev/null
+
+ cmake_policy(SET CMP0003 NEW)
+ cmake_policy(SET CMP0005 NEW)
+
+ cmake_minimum_required(VERSION 2.8)
+
+ # -----------------------------------------------------------------------------
+ # Macros
+
+
+ # stub macro, does nothing
+ macro(blender_add_lib
+ 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)
+ endmacro()
+
+
+ # -----------------------------------------------------------------------------
+ # Libraries
+
+ # ghost
+ include(${CMAKE_SOURCE_DIR}/../CMakeLists.txt)
+ suffix_relpaths(INC_NEW "${INC}" "../")
+ suffix_relpaths(SRC_NEW "${SRC}" "../")
+ include_directories(${INC_NEW})
+ add_library(ghost_lib ${SRC_NEW})
+
+ # string
+ include(${CMAKE_SOURCE_DIR}/../../string/CMakeLists.txt)
+ suffix_relpaths(INC_NEW "${INC}" "../../string/")
+ suffix_relpaths(SRC_NEW "${SRC}" "../../string/")
+ include_directories(${INC_NEW})
+ add_library(string_lib ${SRC_NEW})
+
+ # guardedalloc
+ include(${CMAKE_SOURCE_DIR}/../../guardedalloc/CMakeLists.txt)
+ suffix_relpaths(INC_NEW "${INC}" "../../guardedalloc/")
+ suffix_relpaths(SRC_NEW "${SRC}" "../../guardedalloc/")
+ include_directories(${INC_NEW})
+ add_library(guardedalloc_lib ${SRC_NEW})
+
++# blenfont
++include(${CMAKE_SOURCE_DIR}/../../../source/blender/blenfont/CMakeLists.txt)
++suffix_relpaths(INC_NEW "${INC}" "../../../source/blender/blenfont/")
++suffix_relpaths(SRC_NEW "${SRC}" "../../../source/blender/blenfont/")
++include_directories(${INC_NEW})
++add_library(blenfont_lib ${SRC_NEW})
++
++# grr, blenfont needs BLI
++include_directories(
++ "../../../source/blender/blenlib"
++ "../../../source/blender/blenloader"
++ )
++add_library(bli_lib
++ "../../../source/blender/blenlib/intern/fileops.c"
++ "../../../source/blender/blenlib/intern/rct.c"
++ "../../../source/blender/blenlib/intern/string.c"
++ "../../../source/blender/blenlib/intern/listbase.c"
++ "../../../source/blender/blenlib/intern/storage.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"
++ )
++
+
+ find_package(OpenGL REQUIRED)
+
++find_package(Freetype REQUIRED)
++
+ include_directories(${CMAKE_SOURCE_DIR}/../)
+ include_directories(${OPENGL_INCLUDE_DIR})
++include_directories(${FREETYPE_INCLUDE_DIRS})
++include_directories(${CMAKE_SOURCE_DIR}/../../../source/blender/blenfont)
+
+ if(UNIX AND NOT APPLE)
+ find_package(X11 REQUIRED)
+
+ set(PLATFORM_LINKLIBS
+ ${X11_X11_LIB}
+ ${X11_Xinput_LIB}
+ )
+ endif()
+
+ # -----------------------------------------------------------------------------
+ # Executables
+
+
+ # Gears (C)
+ add_executable(gears_c
+ ${CMAKE_SOURCE_DIR}/gears/GHOST_C-Test.c)
+
+ target_link_libraries(gears_c
+ ghost_lib
+ string_lib
+ ${OPENGL_gl_LIBRARY}
+ ${OPENGL_glu_LIBRARY}
+ ${PLATFORM_LINKLIBS}
+ )
+
+
+ # Gears (C++)
+ add_executable(gears_cpp
+ ${CMAKE_SOURCE_DIR}/gears/GHOST_Test.cpp)
+
+ target_link_libraries(gears_cpp
+ ghost_lib
+ string_lib
+ ${OPENGL_gl_LIBRARY}
+ ${OPENGL_glu_LIBRARY}
+ ${PLATFORM_LINKLIBS}
+ )
+
+
+ # MultiTest (C)
+ add_executable(multitest_c
++ ${CMAKE_SOURCE_DIR}/../../../source/blender/editors/datafiles/bfont.ttf.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
+ )
+
+ target_link_libraries(multitest_c
++ blenfont_lib
++ bli_lib
+ ghost_lib
+ string_lib
+ guardedalloc_lib
+ ${OPENGL_gl_LIBRARY}
+ ${OPENGL_glu_LIBRARY}
++ ${FREETYPE_LIBRARY}
+ ${PLATFORM_LINKLIBS}
+ )
calc_tw_center(scene, vec);
totsel= 1;
} else {
++#if 1 /* OLD CODE */
+ /* do vertices for center, and if still no normal found, use vertex normals */
+ BM_ITER(eve, &iter, bm, BM_VERTS_OF_MESH, NULL) {
+ if(BM_TestHFlag(eve, BM_SELECT)) {
+ totsel++;
+ calc_tw_center(scene, eve->co);
+ }
+ }
++
++#else // BMESH_TODO
+ /* do vertices/edges/faces for center depending on selection
+ mode. note we can't use just vertex selection flag because
+ it is not flush down on changes */
+ if(ts->selectmode & SCE_SELECT_VERTEX) {
+ for(eve= em->verts.first; eve; eve= eve->next) {
+ if(eve->f & SELECT) {
+ totsel++;
+ calc_tw_center(scene, eve->co);
+ }
+ }
+ }
+ else if(ts->selectmode & SCE_SELECT_EDGE) {
+ EditEdge *eed;
+
+ for(eve= em->verts.first; eve; eve= eve->next) eve->f1= 0;
+ for(eed= em->edges.first; eed; eed= eed->next) {
+ if(eed->h==0 && (eed->f & SELECT)) {
+ if(!eed->v1->f1) {
+ eed->v1->f1= 1;
+ totsel++;
+ calc_tw_center(scene, eed->v1->co);
+ }
+ if(!eed->v2->f1) {
+ eed->v2->f1= 1;
+ totsel++;
+ calc_tw_center(scene, eed->v2->co);
+ }
+ }
+ }
+ }
+ else {
+ EditFace *efa;
+
+ for(eve= em->verts.first; eve; eve= eve->next) eve->f1= 0;
+ for(efa= em->faces.first; efa; efa= efa->next) {
+ if(efa->h==0 && (efa->f & SELECT)) {
+ if(!efa->v1->f1) {
+ efa->v1->f1= 1;
+ totsel++;
+ calc_tw_center(scene, efa->v1->co);
+ }
+ if(!efa->v2->f1) {
+ efa->v2->f1= 1;
+ totsel++;
+ calc_tw_center(scene, efa->v2->co);
+ }
+ if(!efa->v3->f1) {
+ efa->v3->f1= 1;
+ totsel++;
+ calc_tw_center(scene, efa->v3->co);
+ }
+ if(efa->v4 && !efa->v4->f1) {
+ efa->v4->f1= 1;
+ totsel++;
+ calc_tw_center(scene, efa->v4->co);
+ }
+ }
+ }
+ }
++#endif
}
} /* end editmesh */
else if (obedit->type==OB_ARMATURE){