From c50b5ee320d4d323b58ea038969d65583db72ad9 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 9 Jul 2011 16:18:15 +0000 Subject: ghost multi-test builds again, now uses BLF font library --- intern/ghost/test/CMakeLists.txt | 34 +++++++++++++++++++++++ intern/ghost/test/multitest/MultiTest.c | 49 +++++++++++++++++++++++++++------ 2 files changed, 75 insertions(+), 8 deletions(-) diff --git a/intern/ghost/test/CMakeLists.txt b/intern/ghost/test/CMakeLists.txt index b8630427b71..a012f6af61c 100644 --- a/intern/ghost/test/CMakeLists.txt +++ b/intern/ghost/test/CMakeLists.txt @@ -58,11 +58,41 @@ 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" + ) + +message(STATUS "EEEk ${SRC_NEW}") + 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) @@ -105,6 +135,7 @@ target_link_libraries(gears_cpp # 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 @@ -114,10 +145,13 @@ add_executable(multitest_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} ) diff --git a/intern/ghost/test/multitest/MultiTest.c b/intern/ghost/test/multitest/MultiTest.c index 848601b2cc7..00939e907d6 100644 --- a/intern/ghost/test/multitest/MultiTest.c +++ b/intern/ghost/test/multitest/MultiTest.c @@ -42,7 +42,18 @@ #include "MEM_guardedalloc.h" #include "GHOST_C-api.h" -#include "BMF_Api.h" + +#ifdef USE_BMF +# include "BMF_Api.h" +#else +# include "BLF_api.h" + extern int datatoc_bfont_ttf_size; + extern char datatoc_bfont_ttf[]; + + // XXX, bad, but BLI uses these + char bprogname[160]= ""; +char U[1024]= {0}; +#endif #include "Util.h" #include "Basic.h" @@ -291,7 +302,7 @@ MainWindow *mainwindow_new(MultiTestApp *app) { win= GHOST_CreateWindow(sys, "MultiTest:Main", 40, 40, 400, 400, GHOST_kWindowStateNormal, GHOST_kDrawingContextTypeOpenGL, - FALSE); + FALSE, FALSE); if (win) { MainWindow *mw= MEM_callocN(sizeof(*mw), "mainwindow_new"); @@ -324,8 +335,12 @@ struct _LoggerWindow { MultiTestApp *app; GHOST_WindowHandle win; - + +#ifdef USE_BMF BMF_Font *font; +#else + int font; +#endif int fonttexid; int fontheight; @@ -429,18 +444,26 @@ static void loggerwindow_do_draw(LoggerWindow *lw) { 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); } +#else + 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); } +#endif GHOST_SwapWindowBuffers(lw->win); } @@ -531,19 +554,25 @@ LoggerWindow *loggerwindow_new(MultiTestApp *app) { GHOST_GetMainDisplayDimensions(sys, &screensize[0], &screensize[1]); win= GHOST_CreateWindow(sys, "MultiTest:Logger", 40, screensize[1]-432, 800, 300, GHOST_kWindowStateNormal, - GHOST_kDrawingContextTypeOpenGL, FALSE); + GHOST_kDrawingContextTypeOpenGL, FALSE, FALSE); 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); 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_"); +#endif lw->nloglines= lw->logsize= 0; lw->loglines= MEM_mallocN(sizeof(*lw->loglines)*lw->nloglines, "loglines"); @@ -711,7 +740,7 @@ ExtraWindow *extrawindow_new(MultiTestApp *app) { win= GHOST_CreateWindow(sys, "MultiTest:Extra", 500, 40, 400, 400, GHOST_kWindowStateNormal, GHOST_kDrawingContextTypeOpenGL, - FALSE); + FALSE, FALSE); if (win) { ExtraWindow *ew= MEM_callocN(sizeof(*ew), "mainwindow_new"); @@ -786,7 +815,7 @@ static int multitest_event_handler(GHOST_EventHandle evt, GHOST_TUserDataPtr dat 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"); @@ -850,6 +879,10 @@ void multitestapp_free(MultiTestApp *app) { /***/ int main(int argc, char **argv) { +#ifndef USE_BMF + BLF_init(11, 72); +#endif + MultiTestApp *app= multitestapp_new(); multitestapp_run(app); -- cgit v1.2.3