/* A class with some handy surface handling statics */

#ifndef _DRAWUTILS_H_
#define _DRAWUTILS_H_

#include <string>
#include <SDL.h>
#include <SDL_ttf.h>

using std::string;

class DrawUtils
{
 public:
    DrawUtils() {}

    static SDL_Surface* load(string file);

    static bool draw(SDL_Surface* dest, SDL_Surface* drawable, int x, int y);
    static bool draw(SDL_Surface* dest, SDL_Surface* drawable, int x, int y, 
		     int x2, int y2, int w, int h);

    static void draw_line(SDL_Surface* dest, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint16 width, Uint32 colour);
    static void draw_circle_filled(SDL_Surface* dest, Sint16 x, Sint16 y, Uint16 r, Uint32 colour);

    static void draw_text(SDL_Surface* display, string text, int x, int y,
			  TTF_Font *font, bool center_x, bool center_y);

    // transpare (v) - to make transparent
    // this function makes a particular color key on a surface transparent
    // the traditional color key is 255, 0, 255 (bright pink), so we default
    // to that
    static bool transpare(SDL_Surface* surface, int r = 255, int g = 0,
			  int b = 255);
};

#endif