1
0
mirror of git://projects.qi-hardware.com/gmenu2x.git synced 2024-10-04 02:08:32 +03:00
gmenu2x/src/surface.h
Maarten ter Huurne 52c89d6005 Surface: Removed duplicate constructor.
There were two constructors that took an image path, skin name and alpha flag
as their arguments, but in different orders. We need only one of them.
2011-06-02 04:57:21 +02:00

89 lines
3.4 KiB
C++

/***************************************************************************
* Copyright (C) 2006 by Massimiliano Torromeo *
* massimiliano.torromeo@gmail.com *
* *
* 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. *
***************************************************************************/
#ifndef SURFACE_H
#define SURFACE_H
#include <SDL.h>
#include <string>
#include "asfont.h"
using std::string;
struct RGBAColor {
unsigned short r,g,b,a;
};
RGBAColor strtorgba(const string &strColor);
/**
Wrapper around SDL_Surface
@author Massimiliano Torromeo <massimiliano.torromeo@gmail.com>
*/
class Surface {
public:
Surface();
Surface(Surface *s);
Surface(const string &img, const string &skin="", bool alpha=true);
~Surface();
void enableVirtualDoubleBuffer(SDL_Surface *surface);
SDL_Surface *raw;
void free();
void flip();
void clearClipRect();
void setClipRect(int x, int y, int w, int h);
void setClipRect(SDL_Rect rect);
bool blit(Surface *destination, int x, int y, int w=0, int h=0, int a=-1);
bool blit(Surface *destination, SDL_Rect container, ASFont::HAlign halign = ASFont::HAlignLeft, ASFont::VAlign valign = ASFont::VAlignTop);
bool blitCenter(Surface *destination, int x, int y, int w=0, int h=0, int a=-1);
bool blitRight(Surface *destination, int x, int y, int w=0, int h=0, int a=-1);
void write(ASFont *font, const string &text, int x, int y, ASFont::HAlign halign = ASFont::HAlignLeft, ASFont::VAlign valign = ASFont::VAlignTop) {
font->write(this, text, x, y, halign, valign);
}
int box(Sint16, Sint16, Sint16, Sint16, Uint8, Uint8, Uint8, Uint8);
int box(Sint16, Sint16, Sint16, Sint16, Uint8, Uint8, Uint8);
int box(Sint16, Sint16, Sint16, Sint16, RGBAColor);
int box(SDL_Rect, RGBAColor);
int rectangle(Sint16, Sint16, Sint16, Sint16, Uint8, Uint8, Uint8, Uint8);
int rectangle(Sint16, Sint16, Sint16, Sint16, RGBAColor);
int rectangle(SDL_Rect, RGBAColor);
int hline(Sint16, Sint16, Sint16, Uint8, Uint8, Uint8, Uint8);
private:
SDL_PixelFormat *format();
void load(const string &img, bool alpha=true, const string &skin="");
bool blit(SDL_Surface *destination, int x, int y, int w=0, int h=0, int a=-1);
bool blitCenter(SDL_Surface *destination, int x, int y, int w=0, int h=0, int a=-1);
bool blitRight(SDL_Surface *destination, int x, int y, int w=0, int h=0, int a=-1);
bool locked;
int halfW, halfH;
SDL_Surface *dblbuffer;
};
#endif