 
 /***********************************************
 *
 *  file d:\cips\cips.c
 *
 *  Functions: This file contains
 *      main
 *      clear_text_screen
 *      show_menu
 *      show_image
 *
 *  External Calls:
 *    numcvrt.c - get_integer
 *    gin.c - get_image_name
 *    rtiff.c - read_tiff_image
 *    tiff.c - read_tiff_header
 *    rstring.c - read_string
 *    display.c - display_image
 *           display_menu_for_display_image
 *    pi.c - print_image
 *
 *  Modifications:
 *     26 June 1990 - created
 *
 *************************************************/

#include "d:\cips\cips.h"


short the_image[ROWS][COLS];
short out_image[ROWS][COLS];

main()
{

 char    color_transform[80],
         monitor_type[80], 
         name[80],
         name2[80],
         rep[80];

 int     color,
         display_colors,
         file_d,
         first_element,
         first_line,
         i,
         ie,
         il,
         image_colors,
         invert,
         j,
         le,
         ll,
         not_finished,
         response;

 long    mean_of_pixels;
 struct  tiff_header_struct image_header;

 clear_text_screen();

 not_finished =  1;
 response   = 99;

 il    = 1;
 ie    = 1;
 ll         = ROWS+1;
 le         = COLS+1;

 display_colors = 16;
 image_colors   = 16;
 invert         =  0;
 strcpy(color_transform, "Straight mode");
 strcpy(monitor_type, "VGA");

 strcpy(name, "d:/pix/adam256.tif");

while(not_finished){
   show_menu();

   get_integer(&response);

   switch (response){

   case 1:/* display image header */
       get_image_name(name);
       read_tiff_header(name, &image_header);
       printf("\n\nCIPS> The image header is:");
       printf("\n\t\twidth=%ld length=%ld  start=%ld  bits=%ld",
           image_header.image_width,
           image_header.image_length,
           image_header.strip_offset,
           image_header.bits_per_pixel);
       printf("\nCIPS> Hit Enter to continue");
       read_string(rep);
       break;

   case 2:/* display image numbers */
       get_image_name(name);
       get_parameters(&il, &ie, &ll, &le);
       read_tiff_image(name, the_image, il, ie, ll, le);
       show_image(the_image, il, ie);
       break;

   case 3:   /* print image numbers */
       get_image_name(name);
       get_parameters(&il, &ie, &ll, &le);
       read_tiff_image(name, the_image, il, ie, ll, le);
       print_image(the_image, name, 1, 1, 1, 100, 18,
                il, ie);
       break;

   case 4:   /* display image */
       get_image_name(name);
       read_tiff_header(name, &image_header);
       get_parameters(&il, &ie, &ll, &le);
       display_menu_for_display_image(&image_colors,
             &display_colors, &invert,
             color_transform, monitor_type);
       display_image(name, the_image, il, ie,
             ll, le, &image_header, monitor_type,
             color_transform, invert,
             image_colors, display_colors);
       break;

   case 20:  /* exit system */
       not_finished = 0;
       break;

   default:
       printf("\nCould not understand response, try again");
       break;

     }               /* ends switch response          */
  }               /* ends while not finished */
}               /* ends main                  */

/******************************************************
*   clear_text_screen()
*
*   This calls Microsoft C functions to clear the text
*   screen and set a blue background with gray text.
*******************************************************/

clear_text_screen()
{
   _setvideomode(_TEXTC80);      /* MSC 6.0 statements */
   _setbkcolor(1);
   _settextcolor(7);
   _clearscreen(_GCLEARSCREEN);
}  /* ends clear_text_screen */

/******************************************************
*   show_image(...     
*
*   This function displays the image numbers on the 
*   screen as text.  It displays 20 rows  with 18   
*   columns each.
*******************************************************/

show_image(image, il, ie)
   int   il, ie;
   short image[ROWS][COLS];
{
   int i, j;
   printf("\n   ");
   for(i=0; i<18; i++)
printf("-%3d", i+ie);

   for(i=0; i<20; i++){
printf("\n%2d>", i+il);
for(j=0; j<18; j++)
   printf("-%3d", image[i][j]);
   }

   printf("\nPress enter to continue");
   get_integer(&i);

}  /* ends show_image  */


/******************************************************
*   show_menu(..
*   This function displays the CIPS main menu.      
*******************************************************/

show_menu()
{

  printf("\n\n\nWelcome to CIPS");
  printf("\nThe C Image Processing System"); 
  printf("\nThese are you choices:\n");
  printf("\n\t1.  Display image header");
  printf("\n\t2.  Show image numbers");
  printf("\n\t3.  Print image numbers");
  printf("\n\t4.  Display image");
  printf("\n\t20. Exit system");
  printf("\n\nEnter choice _\b");

}    /* ends show_menu */
