diff -Naur asc-2.4.0.0/source/graphics/blitter.h asc-2.4.0.0new/source/graphics/blitter.h
--- asc-2.4.0.0/source/graphics/blitter.h	2008-07-11 23:26:58.000000000 +0200
+++ asc-2.4.0.0new/source/graphics/blitter.h	2012-05-04 23:00:53.563590731 +0200
@@ -1,17 +1,17 @@
 /*
     This file is part of Advanced Strategic Command; http://www.asc-hq.de
     Copyright (C) 1994-2004  Martin Bickel  and  Marc Schellenberger
- 
+
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
     the Free Software Foundation; either version 2 of the License, or
     (at your option) any later version.
- 
+
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU General Public License for more details.
- 
+
     You should have received a copy of the GNU General Public License
     along with this program; see the file COPYING. If not, write to the
     Free Software Foundation, Inc., 59 Temple Place, Suite 330,
@@ -163,7 +163,7 @@
       {
          return 0;
       };
-      
+
       void skipWholeLine()
       {
          pointer += linelength;
@@ -363,7 +363,7 @@
          int w = SourcePixelSelector<BytesPerSourcePixel>::getWidth();
 
          TargetPixelSelector::init( dst, dstPos, w, h );
-         
+
          TargetPixelType* pix = (TargetPixelType*)( dst.pixels() );
 
          pix += dstPos.y * dst.pitch()/BytesPerTargetPixel + dstPos.x;
@@ -376,7 +376,7 @@
                int s = TargetPixelSelector::skipTarget(x,y);
                if ( s >= 0 && SourcePixelSelector<BytesPerSourcePixel>::getSourcePixelSkip() > s )
                   s = SourcePixelSelector<BytesPerSourcePixel>::getSourcePixelSkip();
-               
+
                if ( s==0 ) {
                   ColorMerger<BytesPerTargetPixel>::assign ( colorConverter.convert( SourceColorTransform<BytesPerSourcePixel>::transform( SourcePixelSelector<BytesPerSourcePixel>::nextPixel())), pix );
                   ++pix;
@@ -749,7 +749,7 @@
 
       void assign ( PixelType src, PixelType* dest )
       {
-         if ( isOpaque(src ) ) {
+         if ( this->isOpaque(src ) ) {
             *dest = src;
          }
       };
@@ -769,7 +769,7 @@
 
       void assign ( PixelType src, PixelType* dest )
       {
-         if ( isOpaque(src ) ) {
+         if ( this->isOpaque(src ) ) {
             *dest = src;
          }
       };
@@ -928,9 +928,9 @@
       ;
 };
 
+#include "drawing.h"
 
-
-extern const int ColorMerger_Alpha_XLAT_Table_shadings[8]; 
+extern const int ColorMerger_Alpha_XLAT_Table_shadings[8];
 
 template<int pixelsize>
 class ColorMerger_Alpha_XLAT_TableShifter : public ColorMerger_AlphaHandler<pixelsize>
@@ -1031,7 +1031,7 @@
          *dest = col;
       };
 
-     
+
       ColorMerger_Set( SDLmm::Color color )
       {
          col = color;
@@ -1294,7 +1294,7 @@
       {
          return 0;
       };
-      
+
       void nextLine()
       {
          x= 0;
@@ -1418,7 +1418,7 @@
             return 0;
       };
 
-      
+
       void nextLine()
       {
          SourcePixelSelector::nextLine();
@@ -1432,7 +1432,7 @@
 
    public:
 
-      
+
       void setZoomOffset( int x, int y )
       {
          offsetx = x;
@@ -1442,8 +1442,8 @@
             next
          */
       }
-      
-      
+
+
       void setZoom( float factor )
       {
          this->zoomFactor = factor;
@@ -1521,7 +1521,7 @@
       {
          x += pixNum;
       };
-      
+
       int getSourcePixelSkip()
       {
          return 0;
@@ -1615,7 +1615,7 @@
       {
          return 0;
       };
-      
+
       void nextLine()
       {
          x= 0;
@@ -1709,7 +1709,7 @@
       {
          return 0;
       };
-      
+
       void nextLine()
       {
          pointer = startPointer + x1 + (y++) * linelength;
@@ -1735,61 +1735,61 @@
 
 
 class TargetPixelSelector_Rect {
-        SDLmm::SRect rect; 
+        SDLmm::SRect rect;
         int x2,y2;
         int xrange;
         int w,h;
         SPoint pos;
      protected:
-        int skipTarget( int x, int y ) 
-        { 
+        int skipTarget( int x, int y )
+        {
            int nx = x + pos.x;
            int ny = y + pos.y;
            if ( nx >= rect.x && ny >= rect.y && nx < x2 && ny < y2 )
-              return 0; 
+              return 0;
            else {
               if ( ny < rect.y )
                  return xrange - x;
               else
                  if ( nx < rect.x )
                     return rect.x - nx;
-                 else   
+                 else
                     if (ny >= y2 )
                        return -1;
                     else
                        if ( nx >= x2 )
                           return xrange - x;
                        else
-                          return 1;     
-           }      
+                          return 1;
+           }
         };
-        void init( const Surface& srv, const SPoint& position, int xrange, int yrange ) 
+        void init( const Surface& srv, const SPoint& position, int xrange, int yrange )
         {
            w = srv.w();
            h = srv.h();
            pos = position;
            this->xrange = xrange;
         };
-        
+
      public:
-        void setTargetRect( const SDL_Rect& r  ) 
-        { 
-           rect = r; 
-           x2 = r.x + r.w; 
+        void setTargetRect( const SDL_Rect& r  )
+        {
+           rect = r;
+           x2 = r.x + r.w;
            y2 = r.y + r.h;
         };
-        
-        void setClippingRect( SDL_Surface*  srv  ) 
-        { 
+
+        void setClippingRect( SDL_Surface*  srv  )
+        {
            setTargetRect( srv->clip_rect );
         };
-        
-        TargetPixelSelector_Rect ( NullParamType npt = nullParam ) :w(0xffffff),h(0xffffff) {};   
+
+        TargetPixelSelector_Rect ( NullParamType npt = nullParam ) :w(0xffffff),h(0xffffff) {};
   };
 
 
 /*
- 
+
  template<class SourceColorTransform, class ColorMerger, class SourcePixelSelector>
  void megaBlit( const Surface& src, Surface& dst, SPoint dstPos )
  {
@@ -1799,7 +1799,7 @@
        case 4: megaBlit<4,SourceColorTransform,ColorMerger,SourcePixelSelector>( src, dst, dstPos ); break;
     };
  }
- 
+
 */
 
 #endif
diff -Naur asc-2.4.0.0/source/graphics/drawing.h asc-2.4.0.0new/source/graphics/drawing.h
--- asc-2.4.0.0/source/graphics/drawing.h	2008-06-29 13:25:41.000000000 +0200
+++ asc-2.4.0.0new/source/graphics/drawing.h	2012-05-04 23:02:12.486621438 +0200
@@ -1,17 +1,17 @@
 /*
     This file is part of Advanced Strategic Command; http://www.asc-hq.de
     Copyright (C) 1994-2004  Martin Bickel  and  Marc Schellenberger
- 
+
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
     the Free Software Foundation; either version 2 of the License, or
     (at your option) any later version.
- 
+
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU General Public License for more details.
- 
+
     You should have received a copy of the GNU General Public License
     along with this program; see the file COPYING. If not, write to the
     Free Software Foundation, Inc., 59 Temple Place, Suite 330,
@@ -169,7 +169,7 @@
          PixelType* pix = (PixelType*)( surf.pixels() );
          pix += pos.y * surf.pitch()/pixelsize + pos.x;
 
-         assign ( src, pix );
+         this->assign ( src, pix );
       };
 };
 
@@ -206,7 +206,7 @@
    int y2 = pos2.y;
 
    /*  calculate deltax and deltay for initialisation  */
-    
+
    deltax = x2 - x1;
    if ( deltax < 0 )
       deltax = -deltax;
@@ -318,9 +318,9 @@
 
       void assign ( PixelType src, PixelType* dest )
       {
-         if ( isOpaque(src ) ) 
+         if ( isOpaque(src ) )
             *dest = lighten_Color( *dest, factor16 );
-         
+
       };
    public:
       ColorMerger_AlphaLighter ( NullParamType npt = nullParam) : factor16( 16 )
diff -Naur asc-2.4.0.0/source/graphics/surface.cpp asc-2.4.0.0new/source/graphics/surface.cpp
--- asc-2.4.0.0/source/graphics/surface.cpp	2009-04-04 23:21:47.000000000 +0200
+++ asc-2.4.0.0new/source/graphics/surface.cpp	2012-05-04 23:01:17.223597792 +0200
@@ -52,7 +52,7 @@
 	r = c.r;
 	g = c.g;
 	b = c.b;
-	
+
 	return *this;
 }
 
@@ -60,7 +60,7 @@
 	r = (c >> 16) & 0xFF;
 	g = (c >> 8) & 0xFF;
 	b = c & 0xFF;
-	
+
 	return *this;
 }
 
@@ -77,22 +77,22 @@
 
 void Surface::SetScreen( SDL_Surface* screen )
 {
-  if ( screen && screen->format->BitsPerPixel == 32 )    
+  if ( screen && screen->format->BitsPerPixel == 32 )
      default32bit = new SDLmm::PixelFormat ( screen->format );
 }
 
 
-Surface Surface::Duplicate() const 
+Surface Surface::Duplicate() const
 {
    Surface new_surface(CreateSurface(*this));
 
-   megaBlitter<ColorTransform_None, ColorMerger_PlainOverwrite, SourcePixelSelector_Plain, TargetPixelSelector_All>(*this, new_surface, SPoint(0,0), nullParam, nullParam, nullParam, nullParam); 
+   megaBlitter<ColorTransform_None, ColorMerger_PlainOverwrite, SourcePixelSelector_Plain, TargetPixelSelector_All>(*this, new_surface, SPoint(0,0), nullParam, nullParam, nullParam, nullParam);
 
-   new_surface.Blit(*this); 
+   new_surface.Blit(*this);
    return new_surface;
 }
- 
- 
+
+
  void writeDefaultPixelFormat ( SDLmm::PixelFormat pf, tnstream& stream )
  {
     stream.writeInt( 1 );
@@ -105,7 +105,7 @@
     stream.writeInt(pf.Rshift()) ;
     stream.writeInt(pf.Gshift()) ;
     stream.writeInt(pf.Bshift()) ;
-    stream.writeInt(pf.Ashift()) ; 
+    stream.writeInt(pf.Ashift()) ;
     stream.writeInt(pf.Rloss()) ;
     stream.writeInt(pf.Gloss()) ;
     stream.writeInt(pf.Bloss()) ;
@@ -120,7 +120,7 @@
     int version = stream.readInt();
     if ( version != 1 )
        throw tinvalidversion( stream.getLocation(), 1, version );
-       
+
     pf->BitsPerPixel = stream.readInt();
     pf->BytesPerPixel = stream.readInt();
     pf->Rmask = stream.readInt();
@@ -140,8 +140,8 @@
     return pf;
  }
 
- 
- 
+
+
 Surface::Surface( SDL_Surface *surface) : SDLmm::Surface ( surface ), pixelDataPointer(NULL)
 {
    if ( me )
@@ -153,9 +153,9 @@
    if ( GetPixelFormat().BitsPerPixel() == 24 ) {
       Surface s = Surface::createSurface(w(), h(), 32 );
       s.Blit( *this );
-      if ( flags() & SDL_SRCCOLORKEY ) 
+      if ( flags() & SDL_SRCCOLORKEY )
          s.SetColorKey( SDL_SRCCOLORKEY, GetPixelFormat().colorkey() );
-      *this = s;   
+      *this = s;
    }
 
    if ( default32bit && GetPixelFormat().BytesPerPixel() == 4 )  {
@@ -201,7 +201,7 @@
       convert();
 }
 
- 
+
  void Surface::readDefaultPixelFormat ( tnstream& stream )
  {
      default8bit = new SDLmm::PixelFormat( readSDLPixelFormat( stream ) );
@@ -224,7 +224,7 @@
       stream.writeWord ( 0 );
       stream.writeWord ( 0 );
       return;
-   } 
+   }
    stream.writeWord( 16974 );
    stream.writeWord ( 1 );
    stream.writeChar ( 0 );
@@ -245,7 +245,7 @@
       for ( int y = 0; y < h(); ++y )
          for ( int x = 0; x < w(); ++x )
             stream.writeChar( GetPixel(x,y));
-      */      
+      */
    } else {
       SDLmm::PixelFormat pf = GetPixelFormat();
       stream.writeInt(pf.Rmask()) ;
@@ -255,13 +255,13 @@
       for ( int y = 0; y < h(); ++y ) {
          for ( int x = 0; x < w(); ++x )
             stream.writeInt( GetPixel(x,y));
-            
+
       }
    }
 
 }
 
- 
+
 void Surface::read ( tnstream& stream )
 {
   trleheader   hd;
@@ -271,10 +271,10 @@
   hd.rle = stream.readChar();
   hd.x = stream.readWord();
   hd.y = stream.readWord();
-  
+
   if ( hd.x == 0 && hd.y == 0 ) {
       SetSurface( NULL );
-      return;  
+      return;
   }
 
    if (hd.id == 16973) {
@@ -286,7 +286,7 @@
 
       char* uncomp = (char*) uncompress_rlepict ( pnter );
       pixelDataPointer = uncomp;
-      
+
       // TODO fix memory leak: uncomp will not be deleted
       delete[] pnter;
 
@@ -294,9 +294,9 @@
       for ( int y = 0; y <= hd.y; ++y ) {
          char* dest = ((char*)surface->pixels) + y * surface->pitch;
          memcpy( dest, uncomp+4 + y * (hd.x+1), hd.x+1);
-      } 
+      }
       free ( uncomp );
-      
+
       SetSurface( surface );
       SetColorKey( SDL_SRCCOLORKEY, 255 );
       assignDefaultPalette();
@@ -306,8 +306,8 @@
          int version = stream.readInt();
          if ( version > surfaceVersion )
             throw tinvalidversion( stream.getLocation(), version, surfaceVersion );
-             
-         stream.readChar(); // int bitsPerPixel = 
+
+         stream.readChar(); // int bitsPerPixel =
          int bytesPerPixel = stream.readChar();
          int colorkey = stream.readInt();
          int flags = stream.readInt();
@@ -316,10 +316,10 @@
             Uint8* p = (Uint8*)( s->pixels );
             for ( int y = 0; y < hd.y; ++y )
                stream.readdata( p + y*s->pitch, hd.x );
-            
+
                /*for ( int x = 0; x< hd.x; ++x )
                   *(p++) = stream.readChar();*/
-                  
+
             SetSurface( s );
             assignDefaultPalette();
 
@@ -339,15 +339,15 @@
          }
          if ( flags & SDL_SRCCOLORKEY )
             SetColorKey( SDL_SRCCOLORKEY, colorkey );
-            
+
          if ( flags & SDL_SRCALPHA )
             SetAlpha ( SDL_SRCALPHA, GetPixelFormat().alpha());
          else
             SetAlpha ( 0, SDL_ALPHA_OPAQUE);
-            
+
       } else {
          // int w =  (hd.id + 1) * (hd.size + 1) ;
-         
+
          SDL_Surface* s = SDL_CreateRGBSurface( SDL_SWSURFACE, hd.id+1, hd.size+1, 8, 0,0,0,0 );
 
          for ( int y = 0; y <= hd.size; ++y ) {
@@ -355,9 +355,9 @@
             if ( y == 0 ) {
                memcpy ( pixeldata, ((char*)&hd) + 4, sizeof ( hd ) - 4);
                char* q = pixeldata + sizeof(hd) - 4;
-               stream.readdata ( q, s->w - sizeof(hd) + 4 ); 
+               stream.readdata ( q, s->w - sizeof(hd) + 4 );
             } else {
-               stream.readdata ( pixeldata, s->w ); 
+               stream.readdata ( pixeldata, s->w );
             }
          }
 /*
@@ -368,7 +368,7 @@
          SDL_SWSURFACE
          SDL_Surface* s = SDL_CreateRGBSurfaceFrom(pntr, hd.id+1, hd.size+1, 8, hd.id+1, 0, 0, 0, 0 );
 //         s->flags &= ~SDL_PREALLOC;
-  */       
+  */
          SetSurface( s );
          SetColorKey( SDL_SRCCOLORKEY, 255 );
          assignDefaultPalette();
@@ -395,7 +395,7 @@
 {
    assert ( depth == 32 || depth == 8 );
 
-   SDL_Surface* surf = NULL;   
+   SDL_Surface* surf = NULL;
    if ( depth == 32 && default32bit ) {
       int rmask = default32bit->Rmask();
       int gmask = default32bit->Gmask();
@@ -404,7 +404,7 @@
       surf = SDL_CreateRGBSurface(SDL_SWSURFACE, width, height, depth, rmask, gmask, bmask, amask );
    } else
       surf = SDL_CreateRGBSurface(SDL_SWSURFACE, width, height, depth, 0xff, 0xff00, 0xff0000, 0xff000000 );
-   
+
    Surface s ( surf );
    if ( depth == 32 )
       s.Fill(color);
@@ -422,7 +422,7 @@
       Fill( 0 );
    } else {
       Fill( GetPixelFormat().colorkey() );
-   }      
+   }
 }
 
 
@@ -462,7 +462,7 @@
          s = SDL_CreateRGBSurface ( SDL_SWSURFACE, width, height, 8, 0,0,0,0 );
       else
          s = SDL_CreateRGBSurface ( SDL_SWSURFACE, width, height, 32, 0xff, 0xff00, 0xff0000, 0xff000000 );
-         
+
       SDL_StretchSurface( me,0,0,w()-1,h()-1, s, 0,0,width-1, height-1);
 
       SetSurface(s);
@@ -473,7 +473,7 @@
    }
 }
 
-bool Surface::hasAlpha() 
+bool Surface::hasAlpha()
 {
    if ( GetPixelFormat().BitsPerPixel() > 8 ) {
       for ( int y = 0; y < h(); ++y )
@@ -483,7 +483,7 @@
                return true;
             }
 
-      // GetSurface()->flags &= ~SDL_SRCALPHA; 
+      // GetSurface()->flags &= ~SDL_SRCALPHA;
    }
    return false;
 }
@@ -494,16 +494,16 @@
 {
 
    // detect if image has per pixel alpha - don't use ColorKey then
-   if ( GetPixelFormat().BitsPerPixel() > 8 ) 
-      if ( hasAlpha() ) 
+   if ( GetPixelFormat().BitsPerPixel() > 8 )
+      if ( hasAlpha() )
          return;
-   
+
    int flags = SDL_SRCCOLORKEY;
    if ( RLE )
       flags |= SDL_RLEACCEL;
-      
+
    SetAlpha ( 0, 0 );
-      
+
    if ( GetPixelFormat().BitsPerPixel() > 8 ) {
       SetColorKey( flags, GetPixel(0,0) & ( GetPixelFormat().Rmask() | GetPixelFormat().Gmask() | GetPixelFormat().Bmask()));
    } else
@@ -514,7 +514,7 @@
 
 bool Surface::isTransparent( SDLmm::Color col ) const
 {
-   if ( flags() & SDL_SRCCOLORKEY ) 
+   if ( flags() & SDL_SRCCOLORKEY )
       return (col & (GetPixelFormat().Rmask() | GetPixelFormat().Gmask() | GetPixelFormat().Bmask())) == GetPixelFormat().colorkey();
    else {
       if ( GetPixelFormat().BitsPerPixel() == 8 )
@@ -556,7 +556,7 @@
       catch ( tfileerror err ) {
          fatalError( "could not access " + err.getFileName() );
       }
-      
+
    }
    return *mask8;
 
@@ -579,7 +579,7 @@
 
       void assign ( PixelType src, PixelType* dest )
       {
-         if ( !isOpaque(src ) )
+         if ( !this->isOpaque(src ) )
             *dest &= alphamask;
       };
 
@@ -613,20 +613,20 @@
    static Surface* mask32 = NULL;
    if ( !mask32 ) {
       Surface& mask8 = getFieldMask();
-      
+
       mask32 = new Surface ( Surface::createSurface( mask8.w(), mask8.h(), 32 ));
       for ( int y = 0; y < mask8.h(); ++y ) {
          Uint8* s = ((Uint8*) mask8.pixels()) + mask8.pitch() * y;
          Uint32* d = (Uint32*) ((Uint8*)(mask32->pixels()) + mask32->pitch() * y);
          for ( int x = 0; x < mask8.w(); ++x, ++s, ++d)
             if ( *s == 0 )
-               *d = 0;   
+               *d = 0;
             else
                *d = 0xfffefefe;
       }
-              
+
       mask32->SetColorKey( SDL_SRCCOLORKEY, 0 );
-      
+
    }
    if ( s.GetPixelFormat().BitsPerPixel() == 8 ) {
       // we don't want any transformations from one palette to another; we just assume that all 8-Bit images use the same colorspace
@@ -716,7 +716,7 @@
 int Surface::getMemoryFootprint() const
 {
    int size = sizeof(*this);
-   
+
    const SDL_Surface* s = getBaseSurface();
    if ( s ) {
       size += sizeof( SDL_Surface );
@@ -731,14 +731,14 @@
 }
 
 
-void Surface::ColorKey2AlphaChannel() 
+void Surface::ColorKey2AlphaChannel()
 {
    Lock();
    for ( int y = 0; y < h(); ++y ) {
       char* cp = (char*) pixels();
       cp += y * pitch();
       int* ip = (int*) cp;
-      for ( int x = 0; x < w(); ++x, ++ip ) 
+      for ( int x = 0; x < w(); ++x, ++ip )
          if ( (*ip & ~(0xff << GetPixelFormat().Ashift())) == GetPixelFormat().colorkey())
             *ip &= ~(Surface::transparent << GetPixelFormat().Ashift());
    }
diff -Naur asc-2.4.0.0/source/itemrepository.cpp asc-2.4.0.0new/source/itemrepository.cpp
--- asc-2.4.0.0/source/itemrepository.cpp	2009-11-01 12:05:42.000000000 +0100
+++ asc-2.4.0.0new/source/itemrepository.cpp	2012-05-04 23:02:46.968003844 +0200
@@ -7,7 +7,7 @@
     email                : bickel@asc-hq.org
  ***************************************************************************/
 /*! \file itemrepository.cpp
-    \brief Storage facility for all buildingtypes, vehicletypes etc 
+    \brief Storage facility for all buildingtypes, vehicletypes etc
 */
 
 /***************************************************************************
@@ -55,7 +55,7 @@
 }
 
 
-template<class T> 
+template<class T>
 void ItemRepository<T>::RegisterID::operator() (int id )
 {
    typename ObjectMap::iterator i = repository.hash.find ( id );
@@ -88,7 +88,7 @@
    t->filename = fileName;
    t->location = location;
    t->archive = prc.getArchive();
-   add ( t );
+   this->add ( t );
 }
 
 
@@ -110,7 +110,7 @@
       t->archive = stream.readString();
       dataLoaderTicker();
 
-      add ( t );
+      this->add ( t );
       // add ( T::newFromStream(stream ));
    }
 }
@@ -125,7 +125,7 @@
        (*i)->write( stream );
        stream.writeString ( (*i)->filename );
        stream.writeString ( (*i)->location );
-       stream.writeString ( (*i)->archive ); 
+       stream.writeString ( (*i)->archive );
    }
 }
 
@@ -338,7 +338,7 @@
       displayLogMessage ( 4, "loading of cache completed\n");
    } else {
       MessagingHub::Instance().statusInformation("rebuilding data cache, please be patient");
-      
+
       loadalltextfiles();
 
       for ( DataLoaders::iterator dl = dataLoaders.begin(); dl != dataLoaders.end(); ++dl) {
