graphics.hlp (
Topic list)
Important Notice
The pages on this site contain documentation for very old MS-DOS software,
purely for historical purposes.
If you're looking for up-to-date documentation, particularly for programming,
you should not rely on the information found here, as it will be woefully
out of date.
ANIMATE.C
◄Up► ◄Contents► ◄Index► ◄Back►
────────────────────────────────────────────────────────────────────────────
/* ANIMATE.C illustrates animation functions including:
* _getimage _putimage
* _imagesize _grstatus
*/
#include <conio.h>
#include <stddef.h>
#include <stdlib.h>
#include <malloc.h>
#include <graph.h>
short action[5] = { _GPSET, _GPRESET, _GXOR, _GOR, _GAND };
char *descrip[5] = { "PSET ", "PRESET", "XOR ", "OR ", "AND " };
void exitfree( char _huge *buffer );
void main()
{
char _huge *buffer;
long imsize;
short i, x, y = 30;
if( !_setvideomode( _MAXRESMODE ) )
exit( 1 );
/* Measure the image to be drawn and allocate memory for it. */
imsize = _imagesize( -16, -16, +16, +16 );
buffer = halloc( imsize, 1 );
if( buffer == NULL )
exit( 1 );
_setcolor( 3 );
for ( i = 0; i < 5; i++ )
{
/* Draw ellipse at new position and get a copy of it. */
x = 50; y += 40;
_ellipse( _GFILLINTERIOR, x - 15, y - 15, x + 15, y + 15 );
_getimage( x - 16, y - 16, x + 16, y + 16, buffer );
if( _grstatus() )
exitfree( buffer ); /* Quit on error */
/* Display action type and copy a row of ellipses with that type. */
_settextposition( 1, 1 );
_outtext( descrip[i] );
while( x < 260 )
{
x += 5;
_putimage( x - 16, y - 16, buffer, action[i] );
if( _grstatus() < 0 ) /* Ignore warnings, quit on errors */
exitfree( buffer );
}
getch();
}
exitfree( buffer );
}
void exitfree( char _huge *buffer )
{
hfree( buffer );
exit( !_setvideomode( _DEFAULTMODE ) );
}