Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 3682 in orxonox.OLD for orxonox/branches


Ignore:
Timestamp:
Mar 30, 2005, 9:14:35 PM (20 years ago)
Author:
bensch
Message:

orxonox/branches/textEngine: configure.ac adapded, and some minor changes at glfont

Location:
orxonox/branches/textEngine
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • orxonox/branches/textEngine/configure

    r3681 r3682  
    61066106## CHECKING FOR HEADERS AND LIBS ##
    61076107###################################
     6108
     6109#-----------#
     6110# SDL_Image #
     6111#-----------#
     6112#if test x$def_sdl_image = xyes; then
     6113# checking for SDL_image-headers
     6114
     6115for ac_header in SDL/SDL_ttf.h
     6116do
     6117as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
     6118if eval "test \"\${$as_ac_Header+set}\" = set"; then
     6119  echo "$as_me:$LINENO: checking for $ac_header" >&5
     6120echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
     6121if eval "test \"\${$as_ac_Header+set}\" = set"; then
     6122  echo $ECHO_N "(cached) $ECHO_C" >&6
     6123fi
     6124echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
     6125echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
     6126else
     6127  # Is the header compilable?
     6128echo "$as_me:$LINENO: checking $ac_header usability" >&5
     6129echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
     6130cat >conftest.$ac_ext <<_ACEOF
     6131/* confdefs.h.  */
     6132_ACEOF
     6133cat confdefs.h >>conftest.$ac_ext
     6134cat >>conftest.$ac_ext <<_ACEOF
     6135/* end confdefs.h.  */
     6136$ac_includes_default
     6137#include <$ac_header>
     6138_ACEOF
     6139rm -f conftest.$ac_objext
     6140if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
     6141  (eval $ac_compile) 2>conftest.er1
     6142  ac_status=$?
     6143  grep -v '^ *+' conftest.er1 >conftest.err
     6144  rm -f conftest.er1
     6145  cat conftest.err >&5
     6146  echo "$as_me:$LINENO: \$? = $ac_status" >&5
     6147  (exit $ac_status); } &&
     6148         { ac_try='test -z "$ac_c_werror_flag"
     6149                         || test ! -s conftest.err'
     6150  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
     6151  (eval $ac_try) 2>&5
     6152  ac_status=$?
     6153  echo "$as_me:$LINENO: \$? = $ac_status" >&5
     6154  (exit $ac_status); }; } &&
     6155         { ac_try='test -s conftest.$ac_objext'
     6156  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
     6157  (eval $ac_try) 2>&5
     6158  ac_status=$?
     6159  echo "$as_me:$LINENO: \$? = $ac_status" >&5
     6160  (exit $ac_status); }; }; then
     6161  ac_header_compiler=yes
     6162else
     6163  echo "$as_me: failed program was:" >&5
     6164sed 's/^/| /' conftest.$ac_ext >&5
     6165
     6166ac_header_compiler=no
     6167fi
     6168rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
     6169echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
     6170echo "${ECHO_T}$ac_header_compiler" >&6
     6171
     6172# Is the header present?
     6173echo "$as_me:$LINENO: checking $ac_header presence" >&5
     6174echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
     6175cat >conftest.$ac_ext <<_ACEOF
     6176/* confdefs.h.  */
     6177_ACEOF
     6178cat confdefs.h >>conftest.$ac_ext
     6179cat >>conftest.$ac_ext <<_ACEOF
     6180/* end confdefs.h.  */
     6181#include <$ac_header>
     6182_ACEOF
     6183if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
     6184  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
     6185  ac_status=$?
     6186  grep -v '^ *+' conftest.er1 >conftest.err
     6187  rm -f conftest.er1
     6188  cat conftest.err >&5
     6189  echo "$as_me:$LINENO: \$? = $ac_status" >&5
     6190  (exit $ac_status); } >/dev/null; then
     6191  if test -s conftest.err; then
     6192    ac_cpp_err=$ac_c_preproc_warn_flag
     6193    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
     6194  else
     6195    ac_cpp_err=
     6196  fi
     6197else
     6198  ac_cpp_err=yes
     6199fi
     6200if test -z "$ac_cpp_err"; then
     6201  ac_header_preproc=yes
     6202else
     6203  echo "$as_me: failed program was:" >&5
     6204sed 's/^/| /' conftest.$ac_ext >&5
     6205
     6206  ac_header_preproc=no
     6207fi
     6208rm -f conftest.err conftest.$ac_ext
     6209echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
     6210echo "${ECHO_T}$ac_header_preproc" >&6
     6211
     6212# So?  What about this header?
     6213case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
     6214  yes:no: )
     6215    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
     6216echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
     6217    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
     6218echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
     6219    ac_header_preproc=yes
     6220    ;;
     6221  no:yes:* )
     6222    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
     6223echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
     6224    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
     6225echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
     6226    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
     6227echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
     6228    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
     6229echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
     6230    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
     6231echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
     6232    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
     6233echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
     6234    (
     6235      cat <<\_ASBOX
     6236## ---------------------------------------------- ##
     6237## Report this to orxonox-dev at mail.datacore.ch ##
     6238## ---------------------------------------------- ##
     6239_ASBOX
     6240    ) |
     6241      sed "s/^/$as_me: WARNING:     /" >&2
     6242    ;;
     6243esac
     6244echo "$as_me:$LINENO: checking for $ac_header" >&5
     6245echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
     6246if eval "test \"\${$as_ac_Header+set}\" = set"; then
     6247  echo $ECHO_N "(cached) $ECHO_C" >&6
     6248else
     6249  eval "$as_ac_Header=\$ac_header_preproc"
     6250fi
     6251echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
     6252echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
     6253
     6254fi
     6255if test `eval echo '${'$as_ac_Header'}'` = yes; then
     6256  cat >>confdefs.h <<_ACEOF
     6257#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
     6258_ACEOF
     6259
     6260else
     6261  echo "sdl_ttf not found. falling back to other options"; def_sdl_ttf=no
     6262fi
     6263
     6264done
     6265
     6266#fi
     6267#if test x$def_sdl_ttf = xyes; then
     6268# checking for SDL_ttf-lib
     6269  echo "$as_me:$LINENO: checking for main in -lSDL_ttf" >&5
     6270echo $ECHO_N "checking for main in -lSDL_ttf... $ECHO_C" >&6
     6271if test "${ac_cv_lib_SDL_ttf_main+set}" = set; then
     6272  echo $ECHO_N "(cached) $ECHO_C" >&6
     6273else
     6274  ac_check_lib_save_LIBS=$LIBS
     6275LIBS="-lSDL_ttf  $LIBS"
     6276cat >conftest.$ac_ext <<_ACEOF
     6277/* confdefs.h.  */
     6278_ACEOF
     6279cat confdefs.h >>conftest.$ac_ext
     6280cat >>conftest.$ac_ext <<_ACEOF
     6281/* end confdefs.h.  */
     6282
     6283
     6284int
     6285main ()
     6286{
     6287main ();
     6288  ;
     6289  return 0;
     6290}
     6291_ACEOF
     6292rm -f conftest.$ac_objext conftest$ac_exeext
     6293if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
     6294  (eval $ac_link) 2>conftest.er1
     6295  ac_status=$?
     6296  grep -v '^ *+' conftest.er1 >conftest.err
     6297  rm -f conftest.er1
     6298  cat conftest.err >&5
     6299  echo "$as_me:$LINENO: \$? = $ac_status" >&5
     6300  (exit $ac_status); } &&
     6301         { ac_try='test -z "$ac_c_werror_flag"
     6302                         || test ! -s conftest.err'
     6303  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
     6304  (eval $ac_try) 2>&5
     6305  ac_status=$?
     6306  echo "$as_me:$LINENO: \$? = $ac_status" >&5
     6307  (exit $ac_status); }; } &&
     6308         { ac_try='test -s conftest$ac_exeext'
     6309  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
     6310  (eval $ac_try) 2>&5
     6311  ac_status=$?
     6312  echo "$as_me:$LINENO: \$? = $ac_status" >&5
     6313  (exit $ac_status); }; }; then
     6314  ac_cv_lib_SDL_ttf_main=yes
     6315else
     6316  echo "$as_me: failed program was:" >&5
     6317sed 's/^/| /' conftest.$ac_ext >&5
     6318
     6319ac_cv_lib_SDL_ttf_main=no
     6320fi
     6321rm -f conftest.err conftest.$ac_objext \
     6322      conftest$ac_exeext conftest.$ac_ext
     6323LIBS=$ac_check_lib_save_LIBS
     6324fi
     6325echo "$as_me:$LINENO: result: $ac_cv_lib_SDL_ttf_main" >&5
     6326echo "${ECHO_T}$ac_cv_lib_SDL_ttf_main" >&6
     6327if test $ac_cv_lib_SDL_ttf_main = yes; then
     6328  FOUND_SDL_ttf=yes
     6329fi
     6330
     6331     if test x$FOUND_SDL_ttf = xyes ; then
     6332       LIBS="$LIBS -lSDL_ttf"
     6333     else
     6334        echo "------------------"
     6335        echo "SDL_ttf library not found."
     6336        echo "please install the SDL_ttf library, which can be found at http://www.libsdl.org/projects/SDL_ttf/"
     6337        echo "------------------"
     6338        exit -1
     6339     fi
     6340#fi
     6341
    61086342
    61096343#-----------#
  • orxonox/branches/textEngine/configure.ac

    r3681 r3682  
    401401# SDL_Image #
    402402#-----------#
     403#if test x$def_sdl_ttf = xyes; then
     404# checking for SDL_ttf-headers
     405  AC_CHECK_HEADERS([SDL/SDL_ttf.h] ,,
     406      [echo "sdl_ttf not found. falling back to other options"; def_sdl_ttf=no ])
     407#fi
     408#if test x$def_sdl_ttf = xyes; then
     409# checking for SDL_ttf-lib
     410  AC_CHECK_LIB([SDL_ttf], [main], [FOUND_SDL_ttf=yes])
     411     if test x$FOUND_SDL_ttf = xyes ; then
     412       LIBS="$LIBS -lSDL_ttf"
     413     else
     414        echo "------------------"
     415        echo "SDL_ttf library not found."
     416        echo "please install the SDL_ttf library, which can be found at http://www.libsdl.org/projects/SDL_ttf/"
     417        echo "------------------"
     418        exit -1
     419     fi   
     420#fi
     421
     422
     423#-----------#
     424# SDL_Image #
     425#-----------#
    403426if test x$def_sdl_image = xyes; then
    404427# checking for SDL_image-headers
  • orxonox/branches/textEngine/src/Makefile.am

    r3681 r3682  
    5656                 lib/graphics/light.cc \
    5757                 lib/graphics/font/fontset.cc \
     58                 lib/graphics/font/glfont.cc \
    5859                 lib/graphics/importer/array.cc \
    5960                 lib/graphics/importer/objModel.cc \
     
    110111                 lib/graphics/graphics_engine.h \
    111112                 lib/graphics/light.h \
     113                 lib/graphics/font/glfont.h \
    112114                 lib/graphics/font/fontset.h \
    113115                 lib/data/data_tank.h \
  • orxonox/branches/textEngine/src/Makefile.in

    r3681 r3682  
    6464        null_parent.$(OBJEXT) helper_parent.$(OBJEXT) \
    6565        data_tank.$(OBJEXT) graphics_engine.$(OBJEXT) light.$(OBJEXT) \
    66         fontset.$(OBJEXT) array.$(OBJEXT) objModel.$(OBJEXT) \
    67         primitive_model.$(OBJEXT) model.$(OBJEXT) material.$(OBJEXT) \
    68         texture.$(OBJEXT) base_entity.$(OBJEXT) base_object.$(OBJEXT) \
    69         ini_parser.$(OBJEXT) list.$(OBJEXT) resource_manager.$(OBJEXT) \
    70         vector.$(OBJEXT) curve.$(OBJEXT) glmenu_imagescreen.$(OBJEXT)
     66        fontset.$(OBJEXT) glfont.$(OBJEXT) array.$(OBJEXT) \
     67        objModel.$(OBJEXT) primitive_model.$(OBJEXT) model.$(OBJEXT) \
     68        material.$(OBJEXT) texture.$(OBJEXT) base_entity.$(OBJEXT) \
     69        base_object.$(OBJEXT) ini_parser.$(OBJEXT) list.$(OBJEXT) \
     70        resource_manager.$(OBJEXT) vector.$(OBJEXT) curve.$(OBJEXT) \
     71        glmenu_imagescreen.$(OBJEXT)
    7172orxonox_OBJECTS = $(am_orxonox_OBJECTS)
    7273orxonox_LDADD = $(LDADD)
     
    8485@AMDEP_TRUE@    ./$(DEPDIR)/game_loader.Po \
    8586@AMDEP_TRUE@    ./$(DEPDIR)/garbage_collector.Po \
     87@AMDEP_TRUE@    ./$(DEPDIR)/glfont.Po \
    8688@AMDEP_TRUE@    ./$(DEPDIR)/glmenu_imagescreen.Po \
    8789@AMDEP_TRUE@    ./$(DEPDIR)/graphics_engine.Po \
     
    262264                 lib/graphics/light.cc \
    263265                 lib/graphics/font/fontset.cc \
     266                 lib/graphics/font/glfont.cc \
    264267                 lib/graphics/importer/array.cc \
    265268                 lib/graphics/importer/objModel.cc \
     
    316319                 lib/graphics/graphics_engine.h \
    317320                 lib/graphics/light.h \
     321                 lib/graphics/font/glfont.h \
    318322                 lib/graphics/font/fontset.h \
    319323                 lib/data/data_tank.h \
     
    419423@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/game_loader.Po@am__quote@
    420424@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/garbage_collector.Po@am__quote@
     425@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glfont.Po@am__quote@
    421426@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glmenu_imagescreen.Po@am__quote@
    422427@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/graphics_engine.Po@am__quote@
     
    784789@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    785790@am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o fontset.obj `if test -f 'lib/graphics/font/fontset.cc'; then $(CYGPATH_W) 'lib/graphics/font/fontset.cc'; else $(CYGPATH_W) '$(srcdir)/lib/graphics/font/fontset.cc'; fi`
     791
     792glfont.o: lib/graphics/font/glfont.cc
     793@am__fastdepCXX_TRUE@   if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT glfont.o -MD -MP -MF "$(DEPDIR)/glfont.Tpo" -c -o glfont.o `test -f 'lib/graphics/font/glfont.cc' || echo '$(srcdir)/'`lib/graphics/font/glfont.cc; \
     794@am__fastdepCXX_TRUE@   then mv -f "$(DEPDIR)/glfont.Tpo" "$(DEPDIR)/glfont.Po"; else rm -f "$(DEPDIR)/glfont.Tpo"; exit 1; fi
     795@AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='lib/graphics/font/glfont.cc' object='glfont.o' libtool=no @AMDEPBACKSLASH@
     796@AMDEP_TRUE@@am__fastdepCXX_FALSE@      depfile='$(DEPDIR)/glfont.Po' tmpdepfile='$(DEPDIR)/glfont.TPo' @AMDEPBACKSLASH@
     797@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     798@am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o glfont.o `test -f 'lib/graphics/font/glfont.cc' || echo '$(srcdir)/'`lib/graphics/font/glfont.cc
     799
     800glfont.obj: lib/graphics/font/glfont.cc
     801@am__fastdepCXX_TRUE@   if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT glfont.obj -MD -MP -MF "$(DEPDIR)/glfont.Tpo" -c -o glfont.obj `if test -f 'lib/graphics/font/glfont.cc'; then $(CYGPATH_W) 'lib/graphics/font/glfont.cc'; else $(CYGPATH_W) '$(srcdir)/lib/graphics/font/glfont.cc'; fi`; \
     802@am__fastdepCXX_TRUE@   then mv -f "$(DEPDIR)/glfont.Tpo" "$(DEPDIR)/glfont.Po"; else rm -f "$(DEPDIR)/glfont.Tpo"; exit 1; fi
     803@AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='lib/graphics/font/glfont.cc' object='glfont.obj' libtool=no @AMDEPBACKSLASH@
     804@AMDEP_TRUE@@am__fastdepCXX_FALSE@      depfile='$(DEPDIR)/glfont.Po' tmpdepfile='$(DEPDIR)/glfont.TPo' @AMDEPBACKSLASH@
     805@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     806@am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o glfont.obj `if test -f 'lib/graphics/font/glfont.cc'; then $(CYGPATH_W) 'lib/graphics/font/glfont.cc'; else $(CYGPATH_W) '$(srcdir)/lib/graphics/font/glfont.cc'; fi`
    786807
    787808array.o: lib/graphics/importer/array.cc
  • orxonox/branches/textEngine/src/lib/graphics/font/glfont.cc

    r3681 r3682  
    5555#include <SDL/SDL_ttf.h>
    5656
    57 #include "../glincl.h"
    58 #include "../debug.h"
     57#include "glincl.h"
     58#include "debug.h"
    5959
    6060
     
    276276
    277277char Usage[100] = "orxonox test" ;
    278 void SDL_GL_Enter2DMode()
    279 {
    280 }
    281 
    282 void SDL_GL_Leave2DMode()
    283 {
    284 }
     278void GLFont::enter2DMode()
     279{
     280  SDL_Surface *screen = SDL_GetVideoSurface();
     281 
     282  /* Note, there may be other things you need to change,
     283     depending on how you have your OpenGL state set up.
     284  */
     285  glPushAttrib(GL_ENABLE_BIT);
     286  glDisable(GL_DEPTH_TEST);
     287  glDisable(GL_CULL_FACE);
     288  glEnable(GL_TEXTURE_2D);
     289 
     290  /* This allows alpha blending of 2D textures with the scene */
     291  glEnable(GL_BLEND);
     292  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
     293 
     294  glViewport(0, 0, screen->w, screen->h);
     295 
     296  glMatrixMode(GL_PROJECTION);
     297  glPushMatrix();
     298  glLoadIdentity();
     299 
     300  glOrtho(0.0, (GLdouble)screen->w, (GLdouble)screen->h, 0.0, 0.0, 1.0);
     301 
     302  glMatrixMode(GL_MODELVIEW);
     303  glPushMatrix();
     304  glLoadIdentity();
     305 
     306  glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
     307}
     308
     309
     310void GLFont::leave2DMode()
     311{
     312        glMatrixMode(GL_MODELVIEW);
     313        glPopMatrix();
     314
     315        glMatrixMode(GL_PROJECTION);
     316        glPopMatrix();
     317
     318        glPopAttrib();
     319}
     320
     321
     322GLuint GLFont::loadTexture(SDL_Surface *surface, GLfloat *texcoord)
     323{
     324  GLuint texture;
     325  int w, h;
     326  SDL_Surface *image;
     327  SDL_Rect area;
     328  Uint32 saved_flags;
     329  Uint8  saved_alpha;
     330 
     331  /* Use the surface width and height expanded to powers of 2 */
     332  w = power_of_two(surface->w);
     333  h = power_of_two(surface->h);
     334  texcoord[0] = 0.0f;                   /* Min X */
     335  texcoord[1] = 0.0f;                   /* Min Y */
     336  texcoord[2] = (GLfloat)surface->w / w;        /* Max X */
     337  texcoord[3] = (GLfloat)surface->h / h;        /* Max Y */
     338 
     339  image = SDL_CreateRGBSurface(
     340                               SDL_SWSURFACE,
     341                               w, h,
     342                               32,
     343#if SDL_BYTEORDER == SDL_LIL_ENDIAN /* OpenGL RGBA masks */
     344                               0x000000FF,
     345                               0x0000FF00,
     346                               0x00FF0000,
     347                               0xFF000000
     348#else
     349                               0xFF000000,
     350                               0x00FF0000,
     351                               0x0000FF00,
     352                               0x000000FF
     353#endif
     354                               );
     355  if ( image == NULL ) {
     356    return 0;
     357  }
     358 
     359  /* Save the alpha blending attributes */
     360  saved_flags = surface->flags&(SDL_SRCALPHA|SDL_RLEACCELOK);
     361  saved_alpha = surface->format->alpha;
     362  if ( (saved_flags & SDL_SRCALPHA) == SDL_SRCALPHA ) {
     363    SDL_SetAlpha(surface, 0, 0);
     364  }
     365 
     366  /* Copy the surface into the GL texture image */
     367  area.x = 0;
     368  area.y = 0;
     369  area.w = surface->w;
     370  area.h = surface->h;
     371  SDL_BlitSurface(surface, &area, image, &area);
     372 
     373  /* Restore the alpha blending attributes */
     374  if ( (saved_flags & SDL_SRCALPHA) == SDL_SRCALPHA ) {
     375    SDL_SetAlpha(surface, saved_flags, saved_alpha);
     376  }
     377 
     378  /* Create an OpenGL texture for the image */
     379  glGenTextures(1, &texture);
     380  glBindTexture(GL_TEXTURE_2D, texture);
     381  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
     382  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
     383  glTexImage2D(GL_TEXTURE_2D,
     384               0,
     385               GL_RGBA,
     386               w, h,
     387               0,
     388               GL_RGBA,
     389               GL_UNSIGNED_BYTE,
     390               image->pixels);
     391  SDL_FreeSurface(image); /* No longer needed */
     392 
     393  return texture;
     394}
     395
    285396
    286397/* Quick utility function for texture creation */
    287 static int power_of_two(int input)
    288 {
    289 }
    290 
    291 
    292 
    293 GLuint SDL_GL_LoadTexture(SDL_Surface *surface, GLfloat *texcoord)
    294 {
    295 
    296 }
    297 
    298 int setup(int argc, char *argv[])
    299 {
    300         char *argv0 = argv[0];
    301         SDL_Surface *screen;
    302         TTF_Font *font;
    303         SDL_Surface *text;
    304         int ptsize;
    305         int i, done;
    306         SDL_Color white = { 0xFF, 0xFF, 0xFF, 0 };
    307         SDL_Color black = { 0x00, 0x00, 0x00, 0 };
    308         SDL_Color *forecol;
    309         SDL_Color *backcol;
    310         GLenum gl_error;
    311         GLuint texture;
    312         int x, y, w, h;
    313         GLfloat texcoord[4];
    314         GLfloat texMinX, texMinY;
    315         GLfloat texMaxX, texMaxY;
    316 
    317         int renderstyle;
    318         int dump;
    319         enum {
    320                 RENDER_LATIN1,
    321                 RENDER_UTF8,
    322                 RENDER_UNICODE
    323         } rendertype;
    324         char *message;
    325 
    326         /* Look for special execution mode */
    327         dump = 0;
    328         /* Look for special rendering types */
    329         rendertype = RENDER_LATIN1;
    330         /* Default is black and white */
    331         forecol = &black;
    332         backcol = &white;
    333         for ( i=1; argv[i] && argv[i][0] == '-'; ++i ) {
    334                 if ( strcmp(argv[i], "-utf8") == 0 ) {
    335                         rendertype = RENDER_UTF8;
    336                 } else
    337                 if ( strcmp(argv[i], "-unicode") == 0 ) {
    338                         rendertype = RENDER_UNICODE;
    339                 } else
    340                 if ( strcmp(argv[i], "-b") == 0 ) {
    341                         renderstyle |= TTF_STYLE_BOLD;
    342                 } else
    343                 if ( strcmp(argv[i], "-i") == 0 ) {
    344                         renderstyle |= TTF_STYLE_ITALIC;
    345                 } else
    346                 if ( strcmp(argv[i], "-u") == 0 ) {
    347                         renderstyle |= TTF_STYLE_UNDERLINE;
    348                 } else
    349                 if ( strcmp(argv[i], "-dump") == 0 ) {
    350                         dump = 1;
    351                 } else
    352                 if ( strcmp(argv[i], "-fgcol") == 0 ) {
    353                         int r, g, b;
    354                         if ( sscanf (argv[++i], "%d,%d,%d", &r, &g, &b) != 3 ) {
    355                                 fprintf(stderr, Usage, argv0);
    356                                 return(1);
    357                         }
    358                         forecol->r = (Uint8)r;
    359                         forecol->g = (Uint8)g;
    360                         forecol->b = (Uint8)b;
    361                 } else
    362                 if ( strcmp(argv[i], "-bgcol") == 0 ) {
    363                         int r, g, b;
    364                         if ( sscanf (argv[++i], "%d,%d,%d", &r, &g, &b) != 3 ) {
    365                                 fprintf(stderr, Usage, argv0);
    366                                 return(1);
    367                         }
    368                         backcol->r = (Uint8)r;
    369                         backcol->g = (Uint8)g;
    370                         backcol->b = (Uint8)b;
    371                 } else {
    372                         fprintf(stderr, Usage, argv0);
    373                         return(1);
    374                 }
    375         }
    376         argv += i;
    377         argc -= i;
    378 
    379         /* Check usage */
    380         if ( ! argv[0] ) {
    381                 fprintf(stderr, Usage, argv0);
    382                 return(1);
    383         }
    384 
    385         /* Initialize SDL */
    386         if ( SDL_Init(SDL_INIT_VIDEO) < 0 ) {
    387                 fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError());
    388                 return(2);
    389         }
    390         atexit(SDL_Quit);
    391 
    392         /* Initialize the TTF library */
    393         if ( TTF_Init() < 0 ) {
    394                 fprintf(stderr, "Couldn't initialize TTF: %s\n",SDL_GetError());
    395                 return(2);
    396         }
    397         atexit(TTF_Quit);
    398 
    399         /* Open the font file with the requested point size */
    400         ptsize = 0;
    401         if ( argc > 1 ) {
    402                 ptsize = atoi(argv[1]);
    403         }
    404         if ( ptsize == 0 ) {
    405                 i = 2;
    406                 ptsize = DEFAULT_PTSIZE;
    407         } else {
    408                 i = 3;
    409         }
    410         font = TTF_OpenFont(argv[0], ptsize);
    411         if ( font == NULL ) {
    412                 fprintf(stderr, "Couldn't load %d pt font from %s: %s\n",
    413                                         ptsize, argv[0], SDL_GetError());
    414                 return(2);
    415         }
    416 
    417         if( dump ) {
    418 
    419                 for( i = 48; i < 123; i++ ) {
    420                         SDL_Surface* glyph = NULL;
    421 
    422                         glyph = TTF_RenderGlyph_Shaded( font, i, *forecol, *backcol );
    423 
    424                         if( glyph ) {
    425                                 char outname[64];
    426                                 sprintf( outname, "glyph-%d.bmp", i );
    427                                 SDL_SaveBMP( glyph, outname );
    428                         }
    429 
    430                 }
    431 
    432                 return( 0 );
    433         }
    434 
    435         /* Set a 640x480 video mode */
    436         screen = SDL_SetVideoMode(640, 480, 0, SDL_OPENGL);
    437         if ( screen == NULL ) {
    438                 fprintf(stderr, "Couldn't set 640x480 OpenGL mode: %s\n",
    439                                                         SDL_GetError());
    440                 return(2);
    441         }
    442 
    443         /* Render and center the message */
    444         if ( argc > 2 ) {
    445                 message = argv[2];
    446         } else {
    447                 message = DEFAULT_TEXT;
    448         }
    449         switch (rendertype) {
    450             case RENDER_LATIN1:
    451                 text = TTF_RenderText_Blended(font, message, *forecol);
    452                 break;
    453 
    454             case RENDER_UTF8:
    455                 text = TTF_RenderUTF8_Blended(font, message, *forecol);
    456                 break;
    457 
    458             case RENDER_UNICODE:
    459                 {
    460                         /* This doesn't actually work because you can't pass
    461                            UNICODE text in via command line, AFAIK, but...
    462                          */
    463                         Uint16 unicode_text[BUFSIZ];
    464                         int index;
    465                         for ( index = 0; (message[0] || message[1]); ++index ) {
    466                                 unicode_text[index]  = ((Uint8 *)message)[0];
    467                                 unicode_text[index] <<= 8;
    468                                 unicode_text[index] |= ((Uint8 *)message)[1];
    469                                 message += 2;
    470                         }
    471                         text = TTF_RenderUNICODE_Blended(font,
    472                                         unicode_text, *forecol);
    473                 }
    474                 break;
    475             default:
    476                 text = NULL; /* This shouldn't happen */
    477                 break;
    478         }
    479         if ( text == NULL ) {
    480                 fprintf(stderr, "Couldn't render text: %s\n", SDL_GetError());
    481                 TTF_CloseFont(font);
    482                 return(2);
    483         }
    484         x = (screen->w - text->w)/2;
    485         y = (screen->h - text->h)/2;
    486         w = text->w;
    487         h = text->h;
    488         printf("Font is generally %d big, and string is %hd big\n",
    489                                                 TTF_FontHeight(font), text->h);
    490 
    491         /* Convert the text into an OpenGL texture */
    492         glGetError();
    493         texture = SDL_GL_LoadTexture(text, texcoord);
    494         if ( (gl_error = glGetError()) != GL_NO_ERROR ) {
    495                 /* If this failed, the text may exceed texture size limits */
    496                 printf("Warning: Couldn't create texture: 0x%x\n", gl_error);
    497         }
    498 
    499         /* Make texture coordinates easy to understand */
    500         texMinX = texcoord[0];
    501         texMinY = texcoord[1];
    502         texMaxX = texcoord[2];
    503         texMaxY = texcoord[3];
    504 
    505         /* We don't need the original text surface anymore */
    506         SDL_FreeSurface(text);
    507 
    508         /* Initialize the GL state */
    509         glViewport( 0, 0, screen->w, screen->h );
    510         glMatrixMode( GL_PROJECTION );
    511         glLoadIdentity( );
    512 
    513         glOrtho( -2.0, 2.0, -2.0, 2.0, -20.0, 20.0 );
    514 
    515         glMatrixMode( GL_MODELVIEW );
    516         glLoadIdentity( );
    517 
    518         glEnable(GL_DEPTH_TEST);
    519 
    520         glDepthFunc(GL_LESS);
    521 
    522         glShadeModel(GL_SMOOTH);
    523 
    524         /* Wait for a keystroke, and blit text on mouse press */
    525         done = 0;
    526         while ( ! done ) {
    527 
    528           /* Show the text on the screen */
    529           SDL_GL_Enter2DMode();
    530           glBindTexture(GL_TEXTURE_2D, texture);
    531           glBegin(GL_QUADS);
    532           glTexCoord2f(texMinX, texMinY); glVertex2i(x,   y  );
    533           glTexCoord2f(texMaxX, texMinY); glVertex2i(x+w, y  );
    534           glTexCoord2f(texMinX, texMaxY); glVertex2i(x,   y+h);
    535           glTexCoord2f(texMaxX, texMaxY); glVertex2i(x+w, y+h);
    536           glEnd();
    537           SDL_GL_Leave2DMode();
    538          
    539           /* Swap the buffers so everything is visible */
    540           SDL_GL_SwapBuffers( );
    541         }
    542         TTF_CloseFont(font);
    543         return(0);
    544 }
    545 
     398int GLFont::power_of_two(int input)
     399{
     400  int value = 1;
     401 
     402  while ( value < input ) {
     403    value <<= 1;
     404  }
     405  return value;
     406}
  • orxonox/branches/textEngine/src/lib/graphics/font/glfont.h

    r3681 r3682  
    77#define _GLFONT_H
    88
    9 #include "../glincl.h"
     9#include "glincl.h"
    1010
    1111class GLFont
     
    4444  static bool ttfInitialized;
    4545
     46  void enter2DMode(void);
     47  void leave2DMode(void);
     48
     49  GLuint loadTexture(SDL_Surface* surface, GLfloat* texcoord);
     50
     51  static int power_of_two(int input);
     52
    4653};
    4754
Note: See TracChangeset for help on using the changeset viewer.