Listing 1

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