/***************************************************************************
                          loadimage.cpp  -  description
                             -------------------
    begin                : Sat Aug 5 2000
    copyright            : (C) 2000 by Martin Bickel
    email                : bickel@asc-hq.org
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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.                                   *
 *                                                                         *
 ***************************************************************************/

// #include "SDL_video.h"
#include "../global.h"
#include "SDLStretch.h"
#include "../basestrm.h"
#include "../loadimage.h"
#include "../dlg_box.h"
#include "../palette.h"
#include "../loadpcx.h"

extern "C" SDL_Surface *ASC_IMG_LoadJPG_RW_D(SDL_RWops *src, int depth);


void read_JPEG_file ( pnstream stream )
{
      SDL_RWops *src = SDL_RWFromStream ( stream );
      SDL_Surface* convimg = ASC_IMG_LoadJPG_RW_D( src, 8 );
      SDL_RWclose(src);

      SDL_Surface* screen = SDL_GetVideoSurface();
                        
      if ( convimg->format->palette )
         SDL_SetColors(screen, convimg->format->palette->colors, 0, convimg->format->palette->ncolors);

      SDL_StretchSurface( convimg,0,0,convimg->w-1,convimg->h-1,
                          screen, 0,0,screen->w-1, screen->h-1);
        
      SDL_UpdateRect(screen, 0,0,0,0);

      SDL_FreeSurface ( convimg );
}

int loadFullscreenImage ( const char* filename )
{
   try {
     
      if ( exist ( filename )) {
	ASCString fname (filename);
         tnfilestream stream ( fname, tnstream::reading );
         if ( strstr ( filename, ".PCX" ) || strstr ( filename, ".pcx" )) {
            loadpcxxy ( &stream, 0, 0 );
         } else {
            read_JPEG_file ( &stream );
         }
         return 1;
      } else {
         string s = filename;
         while ( s.find ( ".PCX" ) != string::npos )
            s.replace ( s.find ( ".PCX" ), 4, ".JPG");

         while ( s.find ( ".pcx" ) != string::npos )
            s.replace ( s.find ( ".pcx" ), 4, ".jpg");

         if ( exist ( s.c_str() )) {
            tnfilestream stream ( s.c_str(), tnstream::reading );
            read_JPEG_file ( &stream );
            return 1;
         } else
            return 0;
      }
   }
   catch ( tfileerror err) {
      displaymessage ( "could not load image %s", 1, err.getFileName().c_str() );
      return 0;
   }
}

void closeFullscreenImage ( void )
{
   dacpalette256 blck;

   for ( int i = 0; i< 256; i++ ) {
      blck[i][0] = 0;
      blck[i][1] = 0;
      blck[i][2] = 0;
   }

   setvgapalette256(blck);
   SDL_FillRect ( SDL_GetVideoSurface(), NULL, 0 );
   setvgapalette256(pal);
}


void setFullscreenSetting ( FullscreenImageSettings setting, int value )
{}

