Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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


Ignore:
Timestamp:
Apr 13, 2005, 12:33:07 PM (20 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/util
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • 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.