Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 3790 in orxonox.OLD for orxonox/trunk/src/lib


Ignore:
Timestamp:
Apr 13, 2005, 12:33:07 PM (19 years ago)
Author:
bensch
Message:

orxonox/trunk: merged the textEngine back into the trunk.
merged with command:
svn merge -r 3681:HEAD branches/textEngine/ trunk/

conflicts in:
world.cc/h orxonox.cc NEWS
changed in favor of the trunk

Location:
orxonox/trunk/src/lib
Files:
1 deleted
9 edited
2 copied

Legend:

Unmodified
Added
Removed
  • orxonox/trunk/src/lib/graphics/graphics_engine.cc

    r3622 r3790  
    167167
    168168
     169/**
     170   \brief entering 2D Mode
     171   
     172   this is a GL-Projection-mode, that is orthogonal, for placing the font in fron of everything else
     173*/
     174void GraphicsEngine::enter2DMode(void)
     175{
     176  SDL_Surface *screen = SDL_GetVideoSurface();
     177 
     178  /* Note, there may be other things you need to change,
     179     depending on how you have your OpenGL state set up.
     180  */
     181  glPushAttrib(GL_ENABLE_BIT);
     182  glDisable(GL_DEPTH_TEST);
     183  glDisable(GL_CULL_FACE);
     184  glDisable(GL_LIGHTING);  // will be set back when leaving 2D-mode
     185  glEnable(GL_TEXTURE_2D);
     186
     187  /* This allows alpha blending of 2D textures with the scene */
     188  glEnable(GL_BLEND);
     189  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
     190 
     191  glViewport(0, 0, screen->w, screen->h);
     192 
     193  glMatrixMode(GL_PROJECTION);
     194  glPushMatrix();
     195  glLoadIdentity();
     196 
     197  glOrtho(0.0, (GLdouble)screen->w, (GLdouble)screen->h, 0.0, 0.0, 1.0);
     198 
     199  glMatrixMode(GL_MODELVIEW);
     200  glPushMatrix();
     201  glLoadIdentity();
     202 
     203  glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
     204}
     205
     206/**
     207   \brief leaves the 2DMode again also \see Font::enter2DMode(void)
     208*/
     209void GraphicsEngine::leave2DMode(void)
     210{
     211  glMatrixMode(GL_MODELVIEW);
     212  glPopMatrix();
     213 
     214  glMatrixMode(GL_PROJECTION);
     215  glPopMatrix();
     216 
     217  glPopAttrib();
     218}
    169219
    170220
  • orxonox/trunk/src/lib/graphics/graphics_engine.h

    r3619 r3790  
    2626  int setGLattribs(void);
    2727  int setResolution(int width, int height, int bpp);
     28  /** \returns the x resolution */
     29  inline int getResolutionX(void) {return this->resolutionX;}
     30  /** \returns the y resolution */
     31  inline int getResolutionY(void) {return this->resolutionY;}
     32  /** \returns the Bits Per Pixel */
     33  inline int getbbp(void) {return this->bitsPerPixel;}
    2834  int resolutionChanged(SDL_ResizeEvent* resizeInfo);
    2935  void listModes(void);
    3036
    3137  static bool texturesEnabled;
     38
     39  static void enter2DMode(void);
     40  static void leave2DMode(void);
    3241
    3342 private:
  • orxonox/trunk/src/lib/graphics/importer/material.cc

    r3672 r3790  
    3030using namespace std;
    3131
    32 
    33 /**
    34    \brief creates a default Material with no Name
    35    normally you call this to create a material List (for an obj-file) and then append with addMaterial()
    36 */
    37 Material::Material()
    38 {
    39   this->init();
    40  
    41   this->setName ("");
    42 }
    43 
    4432/**
    4533   \brief creates a Material.
     
    4836Material::Material (char* mtlName)
    4937{
    50   this->init();
    51  
    52   this->setName (mtlName);
     38   PRINTF(4)("initializing new Material.\n");
     39  this->nextMat = NULL;
     40  this->name ="";
     41  this->setIllum(3);
     42  this->setDiffuse(0,0,0);
     43  this->setAmbient(0,0,0);
     44  this->setSpecular(.5,.5,.5);
     45  this->setShininess(2.0);
     46  this->setTransparency(1.0);
     47
     48
     49  this->diffuseTexture = NULL;
     50  this->ambientTexture = NULL;
     51  this->specularTexture = NULL;
     52
     53  this->diffuseTextureSet = false;
     54  this->ambientTextureSet = false;
     55  this->specularTextureSet = false;
     56
     57  if (mtlName)
     58    this->setName (mtlName);
     59  else
     60    this->setName("");
    5361}
    5462
     
    8694
    8795/**
    88    \brief initializes a new Material with its default Values
    89 */
    90 void Material::init(void)
    91 {
    92   PRINTF(4)("initializing new Material.\n");
    93   this->nextMat = NULL;
    94   this->name ="";
    95   this->setIllum(3);
    96   this->setDiffuse(0,0,0);
    97   this->setAmbient(0,0,0);
    98   this->setSpecular(.5,.5,.5);
    99   this->setShininess(2.0);
    100   this->setTransparency(0.0);
    101 
    102 
    103   this->diffuseTexture = NULL;
    104   this->ambientTexture = NULL;
    105   this->specularTexture = NULL;
    106 
    107   this->diffuseTextureSet = false;
    108   this->ambientTextureSet = false;
    109   this->specularTextureSet = false;
    110 }
    111 
    112 /**
    11396   \brief Search for a Material called mtlName
    11497   \param mtlName the Name of the Material to search for
     
    151134  glMaterialf(GL_FRONT, GL_SHININESS, this->shininess);
    152135 
     136  // setting the transparency
     137  if (this->transparency == 1.0)
     138    {
     139      glDisable(GL_BLEND);
     140    }
     141  else
     142    {
     143      glEnable(GL_BLEND);
     144      glColor4f(1.0f, 1.0f, 1.0f, this->transparency);
     145      glBlendFunc(GL_SRC_ALPHA, GL_ONE);
     146    }
     147
    153148  // setting illumination Model
    154149  if (this->illumModel == 1) //! \todo make this work, if no vertex-normals are read.
  • orxonox/trunk/src/lib/graphics/importer/material.h

    r3590 r3790  
    2222{
    2323 public:
    24   Material ();
    25   Material (char* mtlName);
     24  Material (char* mtlName = "");
    2625  Material* addMaterial(char* mtlName);
    2726  ~Material ();
    28   void init(void);
    2927
    3028  Material* search(char* mtlName);
  • orxonox/trunk/src/lib/graphics/importer/texture.cc

    r3660 r3790  
    9898}
    9999
    100 #ifdef HAVE_SDL_SDL_IMAGE_H
     100#ifdef HAVE_SDL_IMAGE_H
    101101bool Texture::loadImage(const char* imageName)
    102102{
     
    118118            pImage->format = GL_RGB;
    119119          else if (pImage->bpp == 4)
    120             pImage->format = GL_RGBA;
    121          
     120            {
     121              pImage->format = GL_RGBA;
     122              SDL_SetAlpha(this->map, 0, 0);
     123            }
     124
    122125          if( !IMG_isPNG(SDL_RWFromFile(imageName, "rb")) && !IMG_isJPG(SDL_RWFromFile(imageName, "rb")))
    123126            for (int i=0;i<map->h * map->w *3;i+=3)
     
    146149
    147150
    148 #else /* HAVE_SDL_SDL_IMAGE_H */
     151#else /* HAVE_SDL_IMAGE_H */
    149152/**
    150153   \brief Makes the Programm ready to Read-in a texture-File
     
    832835
    833836}
    834 #endif /* HAVE_SDL_SDL_IMAGE_H */
     837#endif /* HAVE_SDL_IMAGE_H */
  • orxonox/trunk/src/lib/graphics/importer/texture.h

    r3660 r3790  
    1414#include "debug.h"
    1515
    16 #ifdef HAVE_SDL_SDL_IMAGE_H
    17 #include <SDL/SDL_image.h>
     16#ifdef HAVE_SDL_IMAGE_H
     17#include <SDL_image.h>
    1818#else
    1919// IMAGE LIBS //
     
    2626#include <png.h>
    2727#endif /* HAVE_PNG_H */
    28 #endif /* HAVE_SDL_SDL_IMAGE_H */
     28#endif /* HAVE_SDL_IMAGE_H */
    2929
    3030//! A Class, that reads in Textures from different fileformats.
     
    5757
    5858  bool loadImage(const char* imageName);
    59 #ifndef HAVE_SDL_SDL_IMAGE_H
     59#ifndef HAVE_SDL_IMAGE_H
    6060
    6161  bool loadBMP (char* bmpName);
     
    7474
    7575};
    76 
    77 
    78 
    7976#endif /* _TEXTURE_H */
  • orxonox/trunk/src/lib/util/list.h

    r3669 r3790  
    107107  void destroy();
    108108  T* firstElement();
     109  T* lastElement();
    109110  bool isEmpty();
    110111  int getSize();
     
    217218}
    218219
     220template<class T>
     221T* tList<T>::lastElement()
     222{
     223  return this->last->curr;
     224}
     225
    219226
    220227template<class T>
  • orxonox/trunk/src/lib/util/resource_manager.cc

    r3677 r3790  
    2222#include "primitive_model.h"
    2323#include "texture.h"
     24#include "text_engine.h"
    2425
    2526#include "list.h"
     
    141142   \returns a pointer to a desired Resource.
    142143*/
    143 void* ResourceManager::load(const char* fileName, ResourcePriority prio)
     144void* ResourceManager::load(const char* fileName, ResourcePriority prio, void* param1, void* param2, void* param3)
    144145{
    145146  ResourceType tmpType;
     
    158159           !strcmp(fileName, "cone"))
    159160    tmpType = PRIM;
     161  else if (!strncmp(fileName+(strlen(fileName)-4), ".ttf", 4))
     162    tmpType = TTF;
    160163  else
    161164    tmpType = IMAGE;
    162165
    163   return this->load(fileName, tmpType, prio);
     166  return this->load(fileName, tmpType, prio, param1, param2, param3);
    164167}
    165168
     
    171174   \returns a pointer to a desired Resource.
    172175*/
    173 void* ResourceManager::load(const char* fileName, ResourceType type, ResourcePriority prio)
     176void* ResourceManager::load(const char* fileName, ResourceType type, ResourcePriority prio, void* param1, void* param2, void* param3)
    174177{
    175178  // searching if the resource was loaded before.
    176   Resource* tmpResource = this->locateResourceByName(fileName);
     179  Resource* tmpResource = this->locateResourceByInfo(fileName, type, param1, param2,param3);
    177180  if (tmpResource) // if the resource was not loaded before.
    178181    {
     
    201204        {
    202205        case OBJ:
     206          if (param1)
     207            tmpResource->modelSize = *(float*)param1;
     208          else
     209            tmpResource->modelSize = 1.0;
     210
    203211          if(isFile(fullName))
    204             tmpResource->pointer = new OBJModel(fullName);
     212            tmpResource->pointer = new OBJModel(fullName, tmpResource->modelSize);
    205213          else
    206214            {
    207215              PRINTF(2)("Sorry, %s does not exist. Loading a cube-Model instead\n", fullName);
    208               tmpResource->pointer = ResourceManager::load("cube", PRIM);
     216              tmpResource->pointer = ResourceManager::load("cube", PRIM, prio, &tmpResource->modelSize);
    209217            }
    210218          break;
    211219        case PRIM:
     220          if (param1)
     221            tmpResource->modelSize = *(float*)param1;
     222          else
     223            tmpResource->modelSize = 1.0;
     224
    212225          if (!strcmp(tmpResource->name, "cube"))
    213             tmpResource->pointer = new PrimitiveModel(CUBE);
     226            tmpResource->pointer = new PrimitiveModel(CUBE, tmpResource->modelSize);
    214227          else if (!strcmp(tmpResource->name, "sphere"))
    215             tmpResource->pointer = new PrimitiveModel(SPHERE);
     228            tmpResource->pointer = new PrimitiveModel(SPHERE, tmpResource->modelSize);
    216229          else if (!strcmp(tmpResource->name, "plane"))
    217             tmpResource->pointer = new PrimitiveModel(PLANE);
     230            tmpResource->pointer = new PrimitiveModel(PLANE, tmpResource->modelSize);
    218231          else if (!strcmp(tmpResource->name, "cylinder"))
    219             tmpResource->pointer = new PrimitiveModel(CYLINDER);
     232            tmpResource->pointer = new PrimitiveModel(CYLINDER, tmpResource->modelSize);
    220233          else if (!strcmp(tmpResource->name, "cone"))
    221             tmpResource->pointer = new PrimitiveModel(CONE);
     234            tmpResource->pointer = new PrimitiveModel(CONE, tmpResource->modelSize);
     235          break;
     236        case TTF:
     237            if (param1)
     238              tmpResource->ttfSize = *(int*)param1;
     239            else
     240              tmpResource->ttfSize = FONT_DEFAULT_SIZE;
     241            if (param2)
     242              {
     243                Vector* tmpVec = (Vector*)param2;
     244                tmpResource->ttfColorR = (int)tmpVec->x;
     245                tmpResource->ttfColorG = (int)tmpVec->y;
     246                tmpResource->ttfColorB = (int)tmpVec->z;
     247              }
     248            else
     249              {
     250                tmpResource->ttfColorR = FONT_DEFAULT_COLOR_R;
     251                tmpResource->ttfColorG = FONT_DEFAULT_COLOR_G;
     252                tmpResource->ttfColorB = FONT_DEFAULT_COLOR_B;
     253              }
     254           
     255          if(isFile(fullName))
     256            tmpResource->pointer = new Font(fullName,
     257                                            tmpResource->ttfSize,
     258                                            tmpResource->ttfColorR,
     259                                            tmpResource->ttfColorG,
     260                                            tmpResource->ttfColorB);
     261          else
     262            PRINTF(2)("Sorry, %s does not exist. Not loading Font\n", fullName);
    222263          break;
    223264        case IMAGE:
     
    259300      delete []fullName;
    260301    }
    261 
    262   return tmpResource->pointer;
     302  if (tmpResource->pointer)
     303    return tmpResource->pointer;
     304  else
     305    {
     306      PRINTF(2)("Resource %s could not be loaded\n", fileName);
     307      delete tmpResource;
     308      return NULL;
     309    }
    263310}
    264311
     
    299346            case IMAGE:
    300347              delete (Texture*)resource->pointer;
     348              break;
     349            case TTF:
     350              delete (Font*)resource->pointer;
    301351              break;
    302352            default:
     
    342392
    343393/**
    344    \brief Searches for a Resource by Name
     394   \brief Searches for a Resource by some information
    345395   \param fileName The name to look for
    346396   \returns a Pointer to the Resource if found, NULL otherwise.
    347397*/
    348 Resource* ResourceManager::locateResourceByName(const char* fileName)
     398Resource* ResourceManager::locateResourceByInfo(const char* fileName, ResourceType type, void* param1, void* param2, void* param3)
    349399{
    350400  //  Resource* enumRes = resourceList->enumerate();
     
    353403  while (enumRes)
    354404    {
    355       if (!strcmp(fileName, enumRes->name))
    356         {
    357           delete iterator;
    358           return enumRes;
     405      if (enumRes->type == type && !strcmp(fileName, enumRes->name))
     406        {
     407          bool match = false;
     408          bool subMatch = false;
     409          switch (type)
     410            {
     411            case PRIM:
     412            case OBJ:
     413              if (!param1)
     414                {
     415                  if (enumRes->modelSize == 1.0)
     416                    match = true;
     417                }
     418              else if (enumRes->modelSize == *(float*)param1)
     419                match = true;
     420              break;
     421            case TTF:
     422              if (!param1)
     423                {
     424                  if (enumRes->ttfSize == FONT_DEFAULT_SIZE)
     425                    subMatch = true;
     426                }
     427              else if (enumRes->modelSize =- *(int*)param1)
     428                subMatch = true;
     429              if(subMatch)
     430                {
     431                  Vector* tmpVec = (Vector*)param2;
     432                  if (!param2)
     433                    {
     434                      if(enumRes->ttfColorR == FONT_DEFAULT_COLOR_R &&
     435                         enumRes->ttfColorG == FONT_DEFAULT_COLOR_G &&
     436                         enumRes->ttfColorB == FONT_DEFAULT_COLOR_B )
     437                        match = true;
     438                    }
     439                  else if (enumRes->ttfColorR == (int)tmpVec->x &&
     440                           enumRes->ttfColorG == (int)tmpVec->y &&
     441                           enumRes->ttfColorB == (int)tmpVec->z )
     442                    match = true;
     443                }
     444
     445              break;
     446            default:
     447              match = true;
     448              break;
     449            }
     450          if (match)
     451            {
     452              delete iterator;
     453              return enumRes;
     454            }
    359455        }
    360456      enumRes = iterator->nextElement();
     
    396492  struct stat status;
    397493  stat(directoryName, &status);
    398   if (status.st_mode & (S_IFDIR | S_IFLNK))
     494  if (status.st_mode & (S_IFDIR
     495#ifndef __WIN32__
     496                        | S_IFLNK
     497#endif
     498                        ))
    399499    return true;
    400500  else
     
    411511  struct stat status;
    412512  stat(fileName, &status);
    413   if (status.st_mode & (S_IFREG | S_IFLNK))
     513  if (status.st_mode & (S_IFREG
     514#ifndef __WIN32__
     515                        | S_IFLNK
     516#endif
     517                        ))
    414518    return true;
    415519  else
  • orxonox/trunk/src/lib/util/resource_manager.h

    r3676 r3790  
    1919
    2020//! An eumerator for different fileTypes the resourceManager supports \todo WAV, MP3, OGG support
    21 enum ResourceType {OBJ, PRIM, WAV, MP3, OGG, IMAGE};
     21enum ResourceType {OBJ, PRIM, WAV, MP3, OGG, TTF, IMAGE};
    2222//! An enumerator for different UNLOAD-types.
    2323/**
     
    3333{
    3434  void* pointer;             //!< Pointer to the Resource.
     35  int count;                 //!< How many times this Resource has been loaded.
    3536 
    3637  char* name;                //!< Name of the Resource.
    3738  ResourceType type;         //!< ResourceType of this Resource.
    3839  ResourcePriority prio;     //!< The Priority of this resource. (This will only be increased)
    39   int count;                 //!< How many times this Resource has been loaded.
     40
     41  // more specific
     42  float modelSize;
     43  unsigned int ttfSize;
     44  unsigned char ttfColorR;
     45  unsigned char ttfColorG;
     46  unsigned char ttfColorB;
    4047};
    4148
     
    4956
    5057   It does it by looking, if a desired file has already been loaded.
     58
     59   \todo loading also dependant by parameters.
    5160*/
    5261class ResourceManager : public BaseObject
     
    5867  bool setDataDir(char* dataDir);
    5968  bool addImageDir(char* imageDir);
    60   void* load(const char* fileName, ResourcePriority prio = RP_NO);
    61   void* load(const char* fileName, ResourceType type, ResourcePriority prio = RP_NO);
     69  void* load(const char* fileName, ResourcePriority prio = RP_NO,
     70             void* param1 = NULL, void* param2 = NULL, void* param3 = NULL);
     71  void* load(const char* fileName, ResourceType type, ResourcePriority prio = RP_NO,
     72             void* param1 = NULL, void* param2 = NULL, void* param3 = NULL);
    6273  bool unload(void* pointer, ResourcePriority prio = RP_NO);
    6374  bool unload(Resource* resource, ResourcePriority = RP_NO);
     
    7485
    7586
    76   Resource* locateResourceByName(const char* fileName);
     87  Resource* locateResourceByInfo(const char* fileName, ResourceType type, void* param1, void* param2, void* param3);
    7788  Resource* locateResourceByPointer(const void* pointer);
    7889 
Note: See TracChangeset for help on using the changeset viewer.