home *** CD-ROM | disk | FTP | other *** search
/ Vectronix 2 / VECTRONIX2.iso / FILES_01 / PC_V11_B.LZH / DEMO_PC / LNATEST.C < prev    next >
C/C++ Source or Header  |  1991-08-29  |  4KB  |  145 lines

  1. /* Demo für LineA-Routinen */
  2.  
  3. #include <tos.h>
  4. #include "linea.h"
  5.  
  6. BITBLT bitblt;
  7. MFORM maus;
  8. PATTERN fill;
  9. SDB sprite1, sprite2, sprite3, sprite4;
  10. SSB buffer1, buffer2, buffer3, buffer4;
  11. int points[] = { 320,0, 430,150, 640,200, 430,250,
  12.                  320,400, 210,250, 0,200, 210,150, };
  13.  
  14. extern FONTS *Fonts;
  15.  
  16. int main(void)
  17. {
  18.     int x, y, i;
  19.     char s[81];
  20.     linea_init();
  21.     set_fg_bp(1); /* schwarz */
  22.     set_ln_mask(0xFFFF); /* durchgezogene Linie */
  23.     set_clip(0, 0, 639, 399, 0); /* Clipping aus */
  24.     hide_mouse(); /* Maus ausschalten */
  25.     set_pattern(fill, 1, 0); /* Füllmuster */
  26.     fill[0] = 0x5555;
  27.     fill[1] = 0xAAAA;
  28.     set_wrt_mode(REPLACE);
  29.     filled_rect(0, 0, 640, 400);
  30.     for(i = 0; i < 256; i += 2)
  31.     {
  32.         fill[0] = i;
  33.         fill[1] = i*256;
  34.         filled_rect(320-i, 200-i/2, 320+i, 200+i/2);
  35.     }
  36.     fill[0] = 0x3333;
  37.     fill[1] = 0xCCCC;
  38.     filled_polygon(points, 8);
  39.     for(x = 0, y = 0; y < 401; x += 2, y += 2)
  40.     {
  41.         draw_line(x,y,640-x,400-y);
  42.         draw_line(x,400-y,640-x,y);
  43.         draw_line(640-x,y,x,400-y);
  44.         draw_line(640-x,400-y,x,y);
  45.     }
  46.     set_wrt_mode(XOR);
  47.     set_ln_mask(0x3333);
  48.     for(y = 10; y < 391; y += 5)
  49.         horizontal_line(10,y,630);
  50.     for(x = 0; x < 641; x++)
  51.         put_pixel(x,200,1);
  52.     for(y = 0; y < 401; y++)
  53.         put_pixel(320,y,1);
  54.     for(i = 0; i <200; i += 4)
  55.         draw_circle(320, 200, i, 1);
  56.     /*** SPRITE DEMO ***/
  57.     sprite1.xhot = sprite1.yhot = 8;
  58.     sprite1.form = VDIFM;
  59.     sprite1.bgcol = 1; sprite1.fgcol = 2;
  60.     for(i = 0; i < 32; i++)
  61.         sprite1.image[i] = 0xF0F0;
  62.     sprite2.xhot = sprite2.yhot = 8;
  63.     sprite2.form = XORFM;
  64.     sprite2.bgcol = 1; sprite2.fgcol = 2;
  65.     for(i = 0; i < 32; i++)
  66.         sprite2.image[i] = 0xF0F0;
  67.     sprite3.xhot = sprite3.yhot = 8;
  68.     sprite3.form = VDIFM;
  69.     sprite3.bgcol = 1; sprite3.fgcol = 2;
  70.     for(i = 0; i < 32; i++)
  71.         sprite3.image[i] = 0x8888;
  72.     sprite4.xhot = sprite4.yhot = 8;
  73.     sprite4.form = XORFM;
  74.     sprite4.bgcol = 1; sprite4.fgcol = 2;
  75.     for(i = 0; i < 32; i++)
  76.         sprite4.image[i] = 0x8888;
  77.     for(x = 10, y = 10; y < 391; x++, y++)
  78.     {
  79.         draw_sprite(x, y, &sprite1, &buffer1);
  80.         draw_sprite(540-x, 400-y, &sprite2, &buffer2);
  81.         draw_sprite(100+x, 400-y, &sprite3, &buffer3);
  82.         draw_sprite(640-x, y, &sprite4, &buffer4);
  83.         for(i = 0; i < 1000; i++)
  84.             ;
  85.         undraw_sprite(&buffer4);
  86.         undraw_sprite(&buffer3);
  87.         undraw_sprite(&buffer2);
  88.         undraw_sprite(&buffer1);
  89.     }
  90.     fill[0] = 0xFFFF;
  91.     fill[1] = 0xFFFF;
  92.     set_wrt_mode(XOR);
  93.     for(i = 0; i < 50; i++)
  94.         filled_rect(0, 0, 640, 400);
  95.     /*** BITBLT Demo ***/
  96.     bitblt.s_xmin = 120;
  97.     bitblt.s_ymin = 0;
  98.     bitblt.d_xmin = 120;
  99.     bitblt.d_ymin = 0;
  100.     bitblt.op_tab[0] = bitblt.op_tab[1] = 0x8;
  101.     bitblt.op_tab[2] = bitblt.op_tab[3] = 0x8;
  102.     bitblt.s_form = bitblt.d_form = Physbase();
  103.     bitblt.s_nxwd = bitblt.d_nxwd = 2;
  104.     bitblt.s_nxln = bitblt.d_nxln = 80;
  105.     bitblt.s_nxpl = bitblt.d_nxpl = 2;
  106.     bitblt.p_addr = 0L;
  107.     bitblt.plane_ct = 1;
  108.     bitblt.fg_col = 1; bitblt.bg_col = 1;
  109.     for(i = 1; i < 400; i++)
  110.     {
  111.         bitblt.b_wd = i;
  112.         bitblt.b_ht = i;
  113.         bit_blt(&bitblt);
  114.     }
  115.     fill[0] = 0x0;
  116.     fill[1] = 0x0;
  117.     set_wrt_mode(REPLACE);
  118.     filled_rect(0, 0, 640, 400);
  119.     set_wrt_mode(TRANS);
  120.     /*** TEXTBLT DEMO ***/
  121.     for(i = 1; i < 51; i++)
  122.         s[i-1] = (char) i;
  123.     s[50] = '\0';
  124.     for(i = 0; i < 19; i++)
  125.     {
  126.         set_text_blt(Fonts->font[i%3], 0, (i*2)%33, 0, 1, 0);
  127.         print_string(10, 10+19*i, i%3, s);
  128.     }
  129.     set_text_blt(Fonts->font[2], 0, 0, 0, 1, 0);
  130.     print_string(10, 371, -2, "Weiter mit Taste ...");
  131.     /*** Maus DEMO ***/
  132.     maus.mf_xhot = maus.mf_yhot = 8;
  133.     maus.mf_fg = 0; maus.mf_bg = 1;
  134.     maus.mf_nplanes = 1;
  135.     for(i = 0; i < 16; i++)
  136.     {
  137.         maus.mf_mask[i] = 0xFFFF-i-i*256;
  138.         maus.mf_data[i] = i+i*256;
  139.     }
  140.     transform_mouse(&maus);
  141.     show_mouse(0);
  142.     Cnecin();
  143.     return(0);
  144. }
  145.