Listing 6 Changes made to the main program in the C Image Processing System to implement image operations

      case 11: /* perform image addition and subtraction */
         printf("\nCIPS> Image Addition:"
             "\n         output = first + second"
             "\n      Image Subtractions:"
             "\n         output = first - second");
         printf("\nCIPS> Enter first image name\n");
         get_image_name(name);
         printf("\nCIPS> Enter second image name\n");
         get_image_name(name2);
         printf("nCIPS> Enter output image name\n");
         get_image_name(name3);
         printf("\nCIPS> Enter parameters for first image");
         get_parameters(&il, &ie, &ll, &le);
         printf("\nCIPS> Enter parameters for second image");
         get_parameters(&il2, &ie2, &ll2, &le2);
         printf("\nCIPS> Enter parameters for output image");
         get_parameters(&il3, &ie3, &ll3, &le3);
         printf("\n\nCIPS> Enter a=addition
                      s=subtraction\n");
         printf("\nCIPS> _\b");
         read_string(low_high);
         if(low_high[0] == 'a' || low_high[0] == 'A')
            add_image_array(name, name2, name3, the_image, out_image,
               il, ie, ll, le, i12, ie2, ll2, le2, i13, ie3, ll3, le3);
         if(low_high[0] == 's' || low_high[0] == 'S')
            subtract_image_array(name, name2, name3, the_image, out_image,
               il, ie, ll, le, il2, ieg, ll2, le2, il3, ie3, ll3, le3);
      break;
      
      case 12: /* image cutting and pasting */
         printf("\n\nCIPS> Cut from source image and paste to"
            " destination image");
         printf("\nCIPS> Enter source image name");
         get_image_name(name);
         get_parameters(&il, &ie, &ll, &le);
         check_cut_and_paste_limits(&il, &ie, &ll, &le);
         cut_image_piece(name, the_image,
                      il, ie, ll, le);
         printf("\nCIPS> Enter destination image name");
         get_image_name(name2);
         printf("\nCIPS> Enter destination image parameters");
         get_parameters(&il, &ie, &ll, &le);
         check_cut_and_paste_limits(&il, &ie, &ll, &le);
         paste_image_piece(name2, name, the_image,
                        out_image, il, ie, ll, le);
      break;
      
      case 13: /* image rotation and flipping */
         printf("\nCIPS> Enter source image name");
         get_image_name(name);
         get_parameters(&il, &ie, &ll, &le);
         printf("\nCIPS> Enter destination image name");
         printf("\nCIPS> (source can equal destination)");
         get_image_name(name2);
         printf("\nCIPS> Enter destination image parameters");
         get_parameters(&il2, &ie2, &ll2, &le2);
         printf("\nCIPS> Enter number of Rotations (1, 2, 3)");
         printf("\nClPS> or type of Flip
           (4=horizontal 5=vertical)");
         printf("\nCIPS> _\b");
         get_integer(&rotation_type);
         rotate_flip_image_array(name, name2, the_image,
                          out_image, il, ie, ll, le,
                          il2, ie2, ll2, le2,
                          rotation_type);
      break;
      
      case 14: /* image scaling */
         printf("\nCIPS> Enter input image name");
         get_image_name(name);
         get_parameters(&il, &ie, &ll, &le);
         printf("\nCIPS> Enter output image name");
         get_image_name(name2);
         get_scaling_options(zoom_shrink, &scale, method);
         if(zoom_shrink[0] == 'z' || zoom_shrink[0] == 'Z')
           zoom_image_array(name, name2, the image, out_image,
                         il, ie, ll, le, scale, method);
         if(zoom_shrink[0] == 's' || zoom_shrink[0] == 'S'){
            printf("\nCIPS> Enter output image parameters");
              get_parameters(&il2, &ie2, &ll2, &leg);
            shrink_image_array(name, name2, the_image,
                                       out_image,
                            il, ie, ll, le, il2, ie2, ll2, le2,
                            scale, method);
         }
      break;
      
      case 15: /* create image */
         printf("\nCIPS> Enter input name of image to create");
         get_image_name(name);
         printf("\nCIPS> Enter number of %d blocks wide",COLS);
         printf("\n      ___\b\b");
         get_integer(&width);
         printf("\nCIPS> Enter number of %d blocks tall",ROWS);
         printf("\n      __\b\b");
         get_integer(&length);
         image_header.lsb            = 1;
         image_header.bits_per_pixel = 8;
         image_header.image_length   = length*COLS;
         image_header.image_width    = width*ROWS;
         image_header.strip_offset   = 1000;
         for(i=0; i<ROWS; i++)
           for(j=0; j<COLS; j++)
              the_image[i][j] = 0;
         create_allo-
cate_tiff_file(name, &image_header, the_image);
       break;
       
       case 20:  /* exit system */
        not_finished = 0;
       break;
       
       default:
        printf("\nCould not understand response, try again");
       break;

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

       printf("\n\nWelcome to CIPS");
       printf("\nThe C Image Processing System");
       printf("\nThese are you choices:");
       printf("\n\t1.  Display image header");
       printf("\n\t2.  Show image numbers");
       printf("\n\t3.  Print image numbers");
       printf("\n\t4.  Display image (VGA & EGA only)");
       printf("\n\t5.  Display or print image using halftoning");
       printf("\n\t6.  Print graphics image using dithering");
       printf("\n\t7.  Print or display histogram numbers");
       printf("\n\t8.  Perform edge detection");
       printf("\n\t9.  Perform edge enhancement");
       printf("\n\t10. Perform image filtering");
       printf("\n\t11. Perform image addition and subtraction");
       printf("\n\t12. Perform image cutting and pasting");
       printf("\n\t13. Perform image rotation and flipping");
       printf("\n\t14. Perform image scaling");
       printf("\n\t15. Create a blank image");
       printf("\n\t20. Exit system");
       printf("\n\nEnter choice_\b");

}    /* ends show_menu */
/* End of File */