ghost multi-test builds again, now uses BLF font library
authorCampbell Barton <ideasman42@gmail.com>
Sat, 9 Jul 2011 16:18:15 +0000 (16:18 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Sat, 9 Jul 2011 16:18:15 +0000 (16:18 +0000)
intern/ghost/test/CMakeLists.txt
intern/ghost/test/multitest/MultiTest.c

index b8630427b71cfc46f7dfd2faeb36bccec64e8158..a012f6af61cd5739f77fd6af97d3f502879bf451 100644 (file)
@@ -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}
                )
index 848601b2cc705cf3eff91b3ed73ccc4ff8cc520a..00939e907d669dba5ebabacd39263255fe699e03 100644 (file)
 #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);