Main Page Namespace List Class Hierarchy Compound List File List Namespace Members Compound Members File Members Related Pages

# sdlmm_surface.h

Go to the documentation of this file.

    00001 /*
    00002  * SDmm - a C++ wrapper for SDL and related libraries
    00003  * Copyright © 2001 David Hedbor <david@hedbor.org>
    00004  *
    00005  * This program is free software; you can redistribute it and/or
    00006  * modify it under the terms of the GNU General Public License as
    00007  * published by the Free Software Foundation; either version 2 of the
    00008  * License, or (at your option) any later version.
    00009  *
    00010  * This program is distributed in the hope that it will be useful, but
    00011  * WITHOUT ANY WARRANTY; without even the implied warranty of
    00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00013  * General Public License for more details.
    00014  *
    00015  * You should have received a copy of the GNU General Public License
    00016  * along with this program; if not, write to the Free Software
    00017  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
    00018  *
    00019  */
    00020
    00021
    00022 #ifndef SDLMM_SURFACE_H
    00023 #define SDLMM_SURFACE_H
    00024
    00025 #include "sdlmm_basesurface.h"
    00026
    00027 namespace SDLmm {
    00029
    00041   class Surface : public BaseSurface
    00042   {
    00043   public:
    00045
    00051     explicit Surface(SDL_Surface *surface)
    00052       : BaseSurface(surface) {
    00053     }
    00054
    00055     Surface(const Surface& other)
    00056       : BaseSurface(other) {
    00057       if (me)
    00058         ++(me->refcount);
    00059     }
    00060
    00062
    00068     Surface(): BaseSurface(0) {   }
    00069
    00071     Surface &operator=(const Surface& other) {
    00072       BaseSurface::operator=(other);
    00073       if (me)
    00074         ++(me->refcount);
    00075       return *this;
    00076     }
    00077
    00078     Surface Duplicate() const {
    00079       Surface new_surface(CreateSurface(*this));
    00080       new_surface.Blit(*this); // copy pixels
    00081       return new_surface;
    00082     }
    00083
    00084     static Surface CreateSurface(const BaseSurface& other) {
    00085       return Surface(
    00086           SDL_CreateRGBSurface(other.w(), other.h(),
    00087                                other.GetPixelFormat().BitsPerPixel(),
    00088                                other.pitch(),
    00089                                other.GetPixelFormat().Rmask(),
    00090                                other.GetPixelFormat().Gmask(),
    00091                                other.GetPixelFormat().Bmask(),
    00092                                other.GetPixelFormat().Amask()));
    00093     }
    00094
    00096
    00110     static Surface CreateSurface(Uint32 flags, int w, int h, int d,
    00111         Uint32 Rmask = 0, Uint32 Gmask = 0,
    00112         Uint32 Bmask = 0, Uint32 Amask = 0) {
    00113       return Surface(
    00114           SDL_CreateRGBSurface(flags, w, h, d,
    00115             Rmask, Gmask, Bmask, Amask));
    00116     }
    00117
    00119
    00134     static Surface CreateSurface(void *pixels, int w, int h, int d, int p,
    00135         Uint32 Rmask = 0, Uint32 Gmask = 0,
    00136         Uint32 Bmask = 0, Uint32 Amask = 0) {
    00137       return Surface(
    00138           SDL_CreateRGBSurfaceFrom(pixels, w, h, d, p,
    00139             Rmask, Gmask, Bmask, Amask));
    00140     }
    00141
    00142     // Documented in BaseSurface
    00143     virtual bool SetDisplayFormat();
    00144     virtual bool SetDisplayFormatAlpha();
    00145
    00147
    00161     static Surface LoadBMP(const char *file) {
    00162         return Surface(SDL_LoadBMP(file));
    00163     }
    00164
    00166
    00170     static Surface LoadBMP(const std::string& file) { return LoadBMP(file.c_str()); }
    00171   };
    00172 }
    00173
    00174 #endif // SDLMM_SURFACE_H
    00175

Documentation automatically generated by written by Dimitri van Heesch. | Project hosted at