/*
==============================================================================
                      WordUp Graphics Toolkit Version 5.0                     
                             Demonstration Program 11                         
                                                                              
 Shows the use of wgetblockwidth and wgetblockheight, and demonstrates        
 the wresize procedure.                                                        
                                                                              
 *** PROJECT ***                                                             
 This program requires the file WGT5_WC.LIB to be linked.                    
                                                                              
 *** DATA FILES ***                                                          
 WGT1.PCX                                                          
                                                           WATCOM C++ VERSION 
==============================================================================
*/

#include <wgt5.h>


#define TIMERSPEED 60
int timer;
int size;
int direction = -1;

void timer_routine (void)
{
 timer++;
}


void main(void)
{
  short i,x,y;
  short oldmode;
  block part1;                    /* part of the screen */
  color pal[256];

  printf ("WGT Example #11\n\n");
  printf ("This program will load a bitmap from a file and display it on the screen.\n");
  printf ("It will then switch back to text mode and display how big the picture is.\n");
  printf ("Graphics mode is entered and the image is resized until a key is\n");
  printf ("pressed.\n");
  printf ("\n\nPress any key to continue.\n");
  getch ();

  if ( !vgadetected () )
  {
    printf("Error - VGA card required for any WGT program.\n");
    exit (0);
  }
  oldmode = wgetmode ();
  vga256 ();

  part1 = wloadpcx ("wgt1.pcx", pal);
  wsetpalette (0, 255, pal);

  wnormscreen ();
  wputblock (0, 0, part1, 0);


  getch ();
  wcls (0);
  x = wgetblockwidth (part1);
  y = wgetblockheight (part1);

  wsetmode (oldmode);               
  printf ("Block width : %i\n",x);  
  printf ("Block height: %i\n",y);
  printf ("Block size is %u bytes.",x*y+4);  /* Add 4 bytes for width and height */
  printf ("\nPress any key to resize...\n");
  getch ();
  vga256 ();
  wsetpalette (0, 255, pal);

  timer = 0;
  size = 50;
  winittimer ();
  wstarttimer (timer_routine, TICKS(TIMERSPEED));

  wclip (0, 0, 319, 199);
  do {
    if (direction > 0)
      {
       size += timer * 2;
       timer = 0;
       if (size > 50)
         direction = -1;
      }   
    else 
      {
       size -= timer * 2;
       timer = 0;
       if (size < -1000)
         direction = 1;
      }   

    wresize (size, size, 319 - size, 199 - size, part1, NORMAL);
  
  } while (!kbhit ());
  getch ();

  wstoptimer (); 
  wdonetimer ();

  wfreeblock (part1);
  wsetmode (oldmode);
}
