2007-06-06 21:26:28 +03:00
# ifndef SDL_EXTENSIONS_H
# define SDL_EXTENSIONS_H
# include "SDL.h"
2007-07-07 19:04:15 +03:00
# include "SDL_ttf.h"
2007-06-06 21:26:28 +03:00
2007-07-07 19:04:15 +03:00
extern SDL_Surface * ekran ;
extern SDL_Color tytulowy , tlo , zwykly ;
2007-09-30 19:16:00 +03:00
extern TTF_Font * TNRB16 , * TNR , * GEOR13 , * GEORXX , * GEORM ;
2007-07-23 15:13:33 +03:00
void blitAtWR ( SDL_Surface * src , int x , int y , SDL_Surface * dst = ekran ) ;
2007-07-28 12:44:10 +03:00
void blitAt ( SDL_Surface * src , int x , int y , SDL_Surface * dst = ekran ) ;
2008-01-24 00:15:33 +02:00
void blitAtWR ( SDL_Surface * src , SDL_Rect pos , SDL_Surface * dst = ekran ) ;
void blitAt ( SDL_Surface * src , SDL_Rect pos , SDL_Surface * dst = ekran ) ;
2007-07-28 12:44:10 +03:00
void updateRect ( SDL_Rect * rect , SDL_Surface * scr = ekran ) ;
2007-08-06 07:03:34 +03:00
bool isItIn ( const SDL_Rect * rect , int x , int y ) ;
2008-01-31 23:35:30 +02:00
template < typename T > int getIndexOf ( const std : : vector < T > & v , const T & val )
{
for ( int i = 0 ; i < v . size ( ) ; i + + )
if ( v [ i ] = = val )
return i ;
return - 1 ;
}
2007-08-04 00:47:34 +03:00
SDL_Rect genRect ( int hh , int ww , int xx , int yy ) ;
2007-07-08 18:19:00 +03:00
namespace CSDL_Ext
2007-06-06 21:26:28 +03:00
{
2008-02-06 15:50:40 +02:00
extern SDL_Surface * std32bppSurface ;
2007-07-08 18:19:00 +03:00
void SDL_PutPixel ( SDL_Surface * ekran , int x , int y , Uint8 R , Uint8 G , Uint8 B , int myC = 0 , Uint8 A = 255 ) ; //myC influences the start of reading pixels
2007-10-25 19:14:43 +03:00
void SDL_PutPixelWithoutRefresh ( SDL_Surface * ekran , int x , int y , Uint8 R , Uint8 G , Uint8 B , int myC = 0 , Uint8 A = 255 ) ; //myC influences the start of reading pixels ; without refreshing
2007-07-08 18:19:00 +03:00
SDL_Surface * rotate01 ( SDL_Surface * toRot , int myC = 2 ) ; //vertical flip
SDL_Surface * hFlip ( SDL_Surface * toRot ) ; //horizontal flip
SDL_Surface * rotate02 ( SDL_Surface * toRot ) ; //rotate 90 degrees left
SDL_Surface * rotate03 ( SDL_Surface * toRot ) ; //rotate 180 degrees
SDL_Cursor * SurfaceToCursor ( SDL_Surface * image , int hx , int hy ) ;
2008-02-06 15:50:40 +02:00
Uint32 SDL_GetPixel ( SDL_Surface * surface , const int & x , const int & y , bool colorByte = false ) ;
2007-07-08 18:19:00 +03:00
SDL_Color SDL_GetPixelColor ( SDL_Surface * surface , int x , int y ) ;
SDL_Surface * alphaTransform ( SDL_Surface * src ) ; //adds transparency and shadows (partial handling only; see examples of using for details)
SDL_Surface * secondAlphaTransform ( SDL_Surface * src , SDL_Surface * alpha ) ; //alpha is a surface we want to blit src to
2008-02-09 16:44:32 +02:00
void blit8bppAlphaTo24bpp ( SDL_Surface * src , SDL_Rect * srcRect , SDL_Surface * dst , SDL_Rect * dstRect ) ; //blits 8 bpp surface with alpha channel to 24 bpp surface
2007-08-17 20:42:21 +03:00
void fullAlphaTransform ( SDL_Surface * & src ) ; //performs first and second alpha transform
2007-07-08 18:19:00 +03:00
Uint32 colorToUint32 ( const SDL_Color * color ) ; //little endian only
2008-01-26 21:36:31 +02:00
void printTo ( std : : string text , int x , int y , TTF_Font * font , SDL_Color kolor = tytulowy , SDL_Surface * dst = ekran , unsigned char quality = 2 ) ; // quality: 0 - lowest, 1 - medium, 2 - highest; prints at right bottom corner of specific area. position of corner indicated by (x, y)
2007-07-10 11:40:09 +03:00
void printAtMiddle ( std : : string text , int x , int y , TTF_Font * font , SDL_Color kolor = tytulowy , SDL_Surface * dst = ekran , unsigned char quality = 2 ) ; // quality: 0 - lowest, 1 - medium, 2 - highest
2007-08-24 11:27:32 +03:00
void printAtMiddleWB ( std : : string text , int x , int y , TTF_Font * font , int charpr , SDL_Color kolor = tytulowy , SDL_Surface * dst = ekran ) ;
2007-07-08 18:19:00 +03:00
void printAt ( std : : string text , int x , int y , TTF_Font * font , SDL_Color kolor = tytulowy , SDL_Surface * dst = ekran , unsigned char quality = 2 ) ; // quality: 0 - lowest, 1 - medium, 2 - highest
2007-07-12 14:41:31 +03:00
void update ( SDL_Surface * what = ekran ) ; //updates whole surface (default - main screen)
2007-07-14 18:24:42 +03:00
void blueToPlayers ( SDL_Surface * sur , int player ) ; //simple color substitution
2007-10-21 19:45:13 +03:00
void blueToPlayersAdv ( SDL_Surface * sur , int player , int mode = 0 , void * additionalInfo = NULL ) ; //substitute blue color by another one, makes it nicer keeping nuances
//mode 1 is calibrated for hero infobox
//mode 2 is calibrated for resbar and gets in additionalInfo a pointer to the set of (SDL_Color) which shouldn't be replaced
2007-09-17 20:36:20 +03:00
void blueToPlayersNice ( SDL_Surface * sur , int player ) ; //uses interface gems to substitute colours
2007-10-07 19:01:53 +03:00
void setPlayerColor ( SDL_Surface * sur , unsigned char player ) ; //sets correct color of flags; -1 for neutral
2007-09-14 16:11:10 +03:00
std : : string processStr ( std : : string str , std : : vector < std : : string > & tor ) ; //replaces %s in string
2007-09-30 19:16:00 +03:00
SDL_Surface * newSurface ( int w , int h , SDL_Surface * mod = ekran ) ; //creates new surface, with flags/format same as in surface given
SDL_Surface * copySurface ( SDL_Surface * mod ) ; //returns copy of given surface
2007-06-06 21:26:28 +03:00
} ;
# endif // SDL_EXTENSIONS_H