/* See COPYING.txt for the full license governing this code. */
/**
 * \file SDL_visualtest_screenshot.h
 *
 * Header for the screenshot API.
 */

#include "SDL_visualtest_process.h"

#ifndef _SDL_visualtest_screenshot_h
#define _SDL_visualtest_screenshot_h

/* Set up for C function definitions, even when using C++ */
#ifdef __cplusplus
extern "C" {
#endif

/**
 * Takes a screenshot of each window owned by the process \c pinfo and saves 
 * it in a file \c prefix-i.png where \c prefix is the full path to the file 
 * along with a prefix given to each screenshot.
 *
 * \return 1 on success, 0 on failure.
 */
int SDLVisualTest_ScreenshotProcess(SDL_ProcessInfo* pinfo, char* prefix);

/**
 * Takes a screenshot of the desktop and saves it into the file with path
 * \c filename.
 *
 * \return 1 on success, 0 on failure.
 */
int SDLVisualTest_ScreenshotDesktop(char* filename);

/**
 * Compare a screenshot taken previously with SUT arguments \c args that is
 * located in \c test_dir with a verification image that is located in 
 * \c verify_dir.
 *
 * \return -1 on failure, 0 if the images were not equal, 1 if the images are equal
 *         and 2 if the verification image is not present.
 */
int SDLVisualTest_VerifyScreenshots(char* args, char* test_dir, char* verify_dir);

/* Ends C function definitions when using C++ */
#ifdef __cplusplus
}
#endif

#endif /* _SDL_visualtest_screenshot_h */