home *** CD-ROM | disk | FTP | other *** search
/ gondwana.ecr.mu.oz.au/pub/ / Graphics.tar / Graphics / VOGLE.ZIP / VOGLE / EXAMPLES / SHAPES.C < prev    next >
C/C++ Source or Header  |  2000-02-11  |  3KB  |  119 lines

  1.  
  2. #include <stdio.h>
  3. #include "vogle.h"
  4.  
  5. /*
  6.  * This program shows some of the simple primitives.
  7.  */
  8. main()
  9. {
  10.     char    device[20];
  11.  
  12.     fprintf(stderr,"Enter device name: ");
  13.     gets(device);
  14.  
  15.     vinit(device);
  16.  
  17.     /*
  18.      * the two lines below clear the screen to white if we have
  19.      * colours, on a monochrome device color is ignored so the
  20.      * screen will be cleared to its background color, normally black.
  21.      */
  22.     color(BLACK);
  23.     clear();
  24.  
  25.     /*
  26.      * set the screen to be 2.0 units wide and 2.0 units wide, with
  27.      * the drawable coordinates going from -1.0 to 1.0.
  28.      */
  29.     ortho2(-1.0, 1.0, -1.0, 1.0);
  30.  
  31.     /*
  32.      * set the text size. After this call no characters in the
  33.      * current font will be wider than 0.1 or higher than 0.1 in
  34.      * world units. As the window is currently 2.0 units wide and
  35.      * 2.0 units high text will be about one twentieth of the screen
  36.      * size.
  37.      */
  38.     textsize(0.1, 0.1);
  39.  
  40.     color(MAGENTA);
  41.  
  42.     /*
  43.      * okay, so we want to draw in the range -1 to 1, but we
  44.      * only want to draw in the top lefthand corner of the
  45.      * screen. The call to viewport allows us to do this. As
  46.      * viewport always takes screen coordinates, which are 
  47.      * always in the range of -1 to 1 we can change always
  48.      * change the viewport to somewhere else on the screen
  49.      * by giving a range in -1 to 1.
  50.      */
  51.     viewport(-1.0, 0.0, 0.0, 1.0);
  52.  
  53.     move2(-0.9, -0.5);        /* write out a heading */
  54.     drawstr("rect");
  55.  
  56.     /*
  57.      * draw a rectangle around the points (-0.2, -0.2), (-0.2, 0.2),
  58.      * (0.3, 0.2), and (0.3, -0.2).
  59.      */
  60.     rect(-0.2, -0.2, 0.3, 0.2);
  61.  
  62.     color(BLUE);
  63.  
  64.     /*
  65.      * now we want to draw in the top right corner of the screen
  66.      */
  67.     viewport(0.0, 1.0, 0.0, 1.0);
  68.  
  69.     move2(-0.9, -0.5);
  70.     drawstr("circle");
  71.  
  72.     /*
  73.      * draw a circle of radius 0.4 around the point (0.0, 0.0)
  74.      */
  75.     circle(0.0, 0.0, 0.4);
  76.  
  77.     color(GREEN);
  78.  
  79.     viewport(-1.0, 0.0, -1.0, 0.0);        /* draw in bottom left corner */
  80.  
  81.     move2(-0.9, -0.5);
  82.     drawstr("ellipse");
  83.  
  84.     /*
  85.      * To draw an ellipse we change the aspect ratio so it is no longer
  86.      * 1 and call circle. In this case we use ortho2 to make the square
  87.      * viewport appear to be higher than it is wide. Alternatively you
  88.      * could use arc to construct one.
  89.      *
  90.      * The call to pushmatrix saves the current viewing transformation.
  91.      * After the ortho2 has been done, we restore the current viewing
  92.      * transformation with a call to popmatrix. (Otherwise everything
  93.      * after the call to ortho would come out looking squashed as the
  94.      * world aspect ratio is no longer 1).
  95.      */
  96.     pushmatrix();
  97.         ortho2(-1.0, 1.0, -1.0, 2.0);
  98.         circle(0.0, 0.5, 0.4);
  99.     popmatrix();
  100.  
  101.     color(RED);
  102.  
  103.     viewport(0.0, 1.0, -1.0, 0.0);    /* now draw in bottom right corner */
  104.  
  105.     move2(-0.9, -0.5);
  106.     drawstr("arc");
  107.  
  108.     /*
  109.      * draw an arc centered at (0.0, 0.0), radius of 0.4. 0.0 is the start
  110.      * angle and 90.0 is the end angle of the arc being drawn. So this
  111.      * draws a quarter circle.
  112.      */
  113.     arc(0.0, 0.0, 0.4, 0.0, 90.0);
  114.  
  115.     getkey();
  116.  
  117.     vexit();
  118. }
  119.