/* Module for taking screenshots for Allegro games.
   Written by Miran Amon.
   version: 1.01
   date: 27. June 2003
*/

#ifndef		SCREENSHOT_H
#define		SCREENSHOT_H

#include <allegro5/allegro.h>

#ifdef __cplusplus
extern "C" {
#endif


/* The structure that actually takes screenshots and counts them. The user
   should create an instance of this structure with create_screenshot()
   and destroy it with destroy_screenshot(). The user should not use the
   contents of the structure directly, the functions for manipulating with
   the screenshot structure should be used instead.
*/
   typedef struct SCREENSHOT {
      int counter;
      char *name;
      char *ext;
   } SCREENSHOT;


/* Creates an instance of the screenshot structure and initializes it. The user
   should call this function somewhere at the beginning of the program and
   use the value it returns to take screenshots. This function makes sure
   previously made screenshots will not be overwritten.

   Parameters:
      char *name - the base of the name for the screenshots; actual names
                   will have their number appended to them; typically the name
                   should have no more than 4 characters (for compatibility)
      char *ext - extension of the screenshot bitmaps; typically this should
                  be either bmp, pcx, tga or lbm, anything else will fail to
                  produce screenshots unless you have and addon library that
		  integrates itself with save_bitmap()

   Returns:
      SCREENSHOT *ss - an instance of the SCREENSHOT structure
*/
   SCREENSHOT *create_screenshot(char *name, char *ext);


/* Destroys an SCREENSHOT object. The user should call this function
   when he's done taking screenshots, i.e. at the end of the program.

   Parameters:
      SCREENSHOT *ss - a pointer to an SCREENSHOT object

   Returns:
      nothing
*/
   void destroy_screenshot(SCREENSHOT * ss);


/* Takes a screenshot and saves it to a file.

   Parameters:
      SCREENSHOT *ss - a pointer to an SCREENSHOT object
      ALLEGRO_BITMAP *buffer - the bitmap from which we take a screenshot; this can be
                       the screen bitmap but taking screenshots from video
		       bitmaps like the screen is a bit slower so if you use a
		       memory double buferring system you should pass your
		       buffer to this function instead

   Returns:
      nothing
*/
   void take_screenshot(SCREENSHOT * ss);


#ifdef __cplusplus
}
#endif
#endif
