home *** CD-ROM | disk | FTP | other *** search
/ FreeWare Collection 3 / FreeSoftwareCollection3pd199x-jp.img / kxc / t_os / townsexp / nhslin / gdm012.c < prev    next >
Text File  |  1980-01-02  |  3KB  |  127 lines

  1. /*
  2.     NHSlin routine Demonnstration Program
  3.     Written by KXC U・K Uota 28-Mar-90
  4.     Execute:RUN386 gdm012 dvx0 dvx1 dvx2 dvx3 dvy0 dvy1 dvy2 dvy3
  5.  
  6.     Note: This sample-program is Public Domain Software.
  7. */
  8.  
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11. #include <egb.h>
  12.  
  13. #define XMAX 320
  14. #define YMAX 240
  15. #define COUNT 100000
  16. #define Color_MAX 32767
  17.  
  18. void main( ac , av )
  19. int ac ;
  20. char *av[] ;
  21. {
  22.     int i , col ;
  23.     int x0 , x1 , y0 , y1 , dx0 , dx1 , dy0 , dy1 ;
  24.     int x2 , x3 , y2 , y3 , dx2 , dx3 , dy2 , dy3 ;
  25.     int dvx0 , dvx1 , dvx2 ,dvx3 ;
  26.     int dvy0 , dvy1 , dvy2 ,dvy3 ;
  27.  
  28.     dvx0 = atol( av[1] ) ;
  29.     dvx1 = atol( av[2] ) ;
  30.     dvx2 = atol( av[3] ) ;
  31.     dvx3 = atol( av[4] ) ;
  32.     dvy0 = atol( av[5] ) ;
  33.     dvy1 = atol( av[6] ) ;
  34.     dvy2 = atol( av[7] ) ;
  35.     dvy3 = atol( av[8] ) ;
  36.  
  37.     screen_32k() ;
  38.  
  39.     x0 = y0 = x2 = y3 = 0 ;
  40.     x1 = x3 = XMAX -1 ;  y1 = y2 = YMAX - 1 ;
  41.     dx0 = dx2 = dvx0 ; dx1 = dx3 =-dvx1 ;
  42.     dy0 = dy3 = dvy0 ; dy1 = dy2 =-dvy1 ;
  43.     
  44.     col = Color_MAX ;
  45.  
  46.     for( i = COUNT ; i != 0 ; i-- ){
  47.         if((x0 = x0 + dx0) <= 0 ){
  48.             x0 = 0 ; dx0 = dvx0 ;
  49.         }
  50.         else if( x0 >= XMAX ){
  51.             x0 = XMAX - 1 ;  dx0 = - dvx0 ;
  52.         }
  53.         if((x1 = x1 + dx1) <= 0 ){
  54.             x1 = 0 ; dx1 = dvx1 ;
  55.         }
  56.         else if( x1 >= XMAX ){
  57.             x1 = XMAX - 1 ;  dx1 = - dvx1 ;
  58.         }
  59.         if((y0 = y0 + dy0) <= 0 ){
  60.             y0 = 0 ; dy0 = dvy0 ;
  61.         }
  62.         else if( y0 >= YMAX ){
  63.             y0 = YMAX - 1 ;  dy0 = - dvy0 ;
  64.         }
  65.         if((y1 = y1 + dy1) <= 0 ){
  66.             y1 = 0 ; dy1 = dvy1 ;
  67.         }
  68.         else if( y1 >= YMAX ){
  69.             y1 = YMAX - 1 ;  dy1 = - dvy1 ;
  70.         }
  71.         if((x2 = x2 + dx2) <= 0 ){
  72.             x2 = 0 ; dx2 = dvx2 ;
  73.         }
  74.         else if( x2 >= XMAX ){
  75.             x2 = XMAX - 1 ;  dx2 = - dvx2 ;
  76.         }
  77.         if((x3 = x3 + dx3) <= 0 ){
  78.             x3 = 0 ; dx3 = dvx3 ;
  79.         }
  80.         else if( x3 >= XMAX ){
  81.             x3 = XMAX - 1 ;  dx3 = - dvx3 ;
  82.         }
  83.         if((y2 = y2 + dy2) <= 0 ){
  84.             y2 = 0 ; dy2 = dvy2 ;
  85.         }
  86.         else if( y2 >= YMAX ){
  87.             y2 = YMAX - 1 ;  dy2 = - dvy2 ;
  88.         }
  89.         if((y3 = y3 + dy3) <= 0 ){
  90.             y3 = 0 ; dy3 = dvy3 ;
  91.         }
  92.         else if( y3 >= YMAX ){
  93.             y3 = YMAX - 1 ;  dy3 = - dvy3 ;
  94.         }
  95.         if ( --col == 0 ) col = Color_MAX ;
  96.         NHSLin( x0 , y0 , x2 , y2 , col ) ;
  97.         NHSLin( x1 , y1 , x2 , y2 , col ) ;
  98.         NHSLin( x1 , y1 , x3 , y3 , col ) ;
  99.         NHSLin( x0 , y0 , x3 , y3 , col ) ;
  100.     }
  101. }
  102.  
  103. screen_32k()
  104. {
  105.     char work[ 1536 ] ;
  106.  
  107.     # define reso_mode10 10
  108.     # define page0 0
  109.     # define page1 1
  110.     # define pri0_frt 0
  111.     # define Page0_On 1
  112.     # define Zoom 2
  113.     # define x_para 2
  114.     # define y_para 2
  115.     # define Screen_size 3
  116.     # define x_length 320
  117.     # define y_length 240
  118.  
  119.     EGB_init( work , 1536 ) ;
  120.     EGB_resolution( work , page0 , reso_mode10 ) ;
  121.     EGB_resolution( work, page1 , reso_mode10 ) ;
  122.     EGB_displayPage( work , pri0_frt , Page0_On ) ;
  123.     EGB_writePage( work , page0 ) ;
  124.     EGB_displayStart( work , Zoom , x_para , y_para ) ;
  125.     EGB_displayStart( work , Screen_size , x_length , y_length ) ;
  126. }
  127.