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.
PAGE.C
                                             Up Contents Index Back
────────────────────────────────────────────────────────────────────────────
 
/* PAGE.C illustrates video page functions including:
 *      _getactivepage  _getvisualpage  _setactivepage  _setvisualpage
 */
 
#include <conio.h>
#include <graph.h>
#include <time.h>
#include <stdlib.h>
 
void delay( clock_t wait );         /* Prototype */
char *jumper[4][3] = { { { "\\o/" }, { " O "  }, { "/ \\" } },
                       { {  "_o_" }, { " O "  }, { "( )"  } },
                       { {  " o " }, { "/O\\" }, { "/ \\" } },
                       { {  " o " }, { " O "  }, { "( )"  } } };
void main()
{
    short oldvpage, oldapage, page, row, col, line;
    struct videoconfig vc;
 
    _getvideoconfig( &vc );
    if( vc.numvideopages < 4 )
        exit( 1 );              /* Fail for OS/2 or monochrome */
    oldapage  = _getactivepage();
    oldvpage  = _getvisualpage();
    if( !_setvideomoderows( _TEXTBW40, 25 ) )
        exit( 1 );              /* Fail if no 40-column mode   */
    _displaycursor( _GCURSOROFF );
 
    /* Draw image on each page. */
    for( page = 0; page < 4; page++ )
    {
        _setactivepage( page );
        for( row = 1; row < 23; row += 7 )
        {
            for( col = 1; col < 37; col += 7 )
            {
                for( line = 0; line < 3; line++ )
                {
                    _settextposition( row + line, col );
                    _outtext( jumper[page][line] );
                }
            }
        }
    }
 
    while( !kbhit() )
        /* Cycle through pages 0 to 3. */
        for( page = 0; page < 4; page++ )
        {
            _setvisualpage( page );
            delay( 100L );
        }
    getch();
 
    /* Restore original page. */
    _setvideomode( _DEFAULTMODE );
    _setactivepage( oldapage );
    _setvisualpage( oldvpage );
}
 
/* Pauses for a specified number of microseconds. */
void delay( clock_t wait )
{
    clock_t goal;
 
    goal = wait + clock();
    while( goal > clock() )
        ;
}