+// $Id$
+//
+// SuperTux
+// Copyright (C) 2004 Tobias Glaesser <tobi.web@gmx.de>
//
-// C Implementation: texture
-//
-// Description:
-//
-//
-// Author: Tobias Glaesser <tobi.web@gmx.de>, (C) 2004
-//
-// Copyright: See COPYING file that comes with this distribution
-//
+// 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; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+// 02111-1307, USA.
#include <assert.h>
#include <iostream>
Surface::Surfaces Surface::surfaces;
SurfaceData::SurfaceData(SDL_Surface* temp, int use_alpha_)
- : type(SURFACE), use_alpha(use_alpha_)
+ : type(SURFACE), surface(0), use_alpha(use_alpha_)
{
// Copy the given surface and make sure that it is not stored in
// video memory
temp->format->Gmask,
temp->format->Bmask,
temp->format->Amask);
+ if(!surface)
+ st_abort("No memory left.", "");
SDL_SetAlpha(temp,0,0);
SDL_BlitSurface(temp, NULL, surface, NULL);
}
SurfaceData::SurfaceData(const std::string& file_, int use_alpha_)
- : type(LOAD), file(file_), use_alpha(use_alpha_)
+ : type(LOAD), surface(0), file(file_), use_alpha(use_alpha_)
{
}
SurfaceData::SurfaceData(const std::string& file_, int x_, int y_, int w_, int h_, int use_alpha_)
- : type(LOAD_PART), file(file_), use_alpha(use_alpha_),
+ : type(LOAD_PART), surface(0), file(file_), use_alpha(use_alpha_),
x(x_), y(y_), w(w_), h(h_)
{
}
SurfaceData::~SurfaceData()
{
-
+ SDL_FreeSurface(surface);
}
SurfaceImpl*
return sdl_surface;
}
+//---------------------------------------------------------------------------
+
+SurfaceImpl::SurfaceImpl()
+{
+}
+
+SurfaceImpl::~SurfaceImpl()
+{
+ SDL_FreeSurface(sdl_surface);
+}
+
+SDL_Surface* SurfaceImpl::get_sdl_surface() const
+{
+ return sdl_surface;
+}
+
#ifndef NOOPENGL
SurfaceOpenGL::SurfaceOpenGL(SDL_Surface* surf, int use_alpha)
{
SurfaceOpenGL::~SurfaceOpenGL()
{
- SDL_FreeSurface(sdl_surface);
glDeleteTextures(1, &gl_texture);
}
h = power_of_two(surf->h),
#if SDL_BYTEORDER == SDL_BIG_ENDIAN
- conv = SDL_CreateRGBSurface(SDL_SWSURFACE, w, h, surf->format->BitsPerPixel,
+ conv = SDL_CreateRGBSurface(SDL_SWSURFACE, w, h, surf->format->BitsPerPixel,
0xff000000, 0x00ff0000, 0x0000ff00, 0x000000ff);
#else
conv = SDL_CreateRGBSurface(SDL_SWSURFACE, w, h, surf->format->BitsPerPixel,
glDisable(GL_TEXTURE_2D);
glDisable(GL_BLEND);
- /* Avoid compiler warnings */
- if(update)
- {}
-
+ (void) update; // avoid compiler warning
+
return 0;
}
glDisable(GL_TEXTURE_2D);
- /* Avoid compiler warnings */
- if(update)
- {}
+ (void) update; // avoid compiler warning
return 0;
}
SurfaceSDL::~SurfaceSDL()
{
- SDL_FreeSurface(sdl_surface);
}
/* EOF */