//----------------------------------------------------------------------------
//
//  ise.h
//
//  Authors: Joe Jarchow, Geoffrey Griffith, Joseph Kadhim, Shinya Daigaku
//           Andrew Pouzeshi
//
//  Sponsor: Tom Lookabaugh, Assistant Professor of Computer Science
//           University of Colorado
//
//  Senior Project: Team ISE (Image Selective Encryption)
//                  December 2003
//					
//  For more information go to: http://128.138.75.184
//----------------------------------------------------------------------------
//
//  This code is open source and may be used with no cost.
//  The authors are in no way responsible for any effects
//  from the usage of this code.  It is provided as is with
//  no warranties, protections, promises or any form of
//  support.  The authors would hope it would only be used
//  for good purposes.  Thank you.
//
//----------------------------------------------------------------------------
//
//  The purpose of this file is to define what functions and members
//  are to be exported for a programmer using the ISE class.  ISE
//  is a class defined to implement image selective encryption for
//  jpeg images.  class ise is intended to be the super class and
//  must be inherited by sub classes.  We have only implemented the
//  jpeg_ise class at this time but other classes could be implemented
//  following the outline used.  Along with constructors there are
//  are various functions for setting and getting the class members
//  each is defined in detail preceeding the appropriate function
//  in the ise.cpp file.
//
//----------------------------------------------------------------------------
#include <stdlib.h>
#include <iostream>
#include <fstream>
using std::ifstream;
using std::ofstream;

#ifndef ISE_H
#define ISE_H
    class ise
    {
        public:
			ise(char*, char* = NULL, char* = NULL);
			virtual ~ise();
			virtual int encrypt_file() { return 0; }
			virtual int decrypt_file() { return 0; }
			int set_key(char*);
			int set_input_file_name(char*);
			int set_output_file_name(char*);
			char* get_input_file_name();
			char* get_output_file_name();
		protected:
			ise();
			int get_ise_file_type(char*);
			int make_ise_file_name();
			int make_output_file_name();
			char* get_key();
	    private:
			char* input_file_name;
			char* output_file_name;
			char* key;
    };
#endif //ISE_H

#ifndef JPEG_ISE_H
#define JPEG_ISE_H
    class jpeg_ise : public ise
    {
        public:
			jpeg_ise(char*, char* = NULL, char* = NULL);
			~jpeg_ise();
			int encrypt_file();
			int decrypt_file();
        protected:
			jpeg_ise();
    };
#endif //JPEG_ISE_H






