home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2001 December / pcwk12201b.iso / Reklamy / CAD-Projekt / MegaCAD-4_5 / CC / LEKCJA10.C_ / LEKCJA10.C
C/C++ Source or Header  |  1995-09-01  |  4KB  |  113 lines

  1. /*                      LEKCJA10.C
  2. //---------------------------------------------------------------------------
  3. Temat:
  4.         Wizualizacja podczas rysowania
  5. //---------------------------------------------------------------------------
  6. Funkcje:
  7.         EXT(202) void DrawInv(         
  8.         EXT(216) void EraseInv(
  9.         EXT(221) short Blink(          
  10.         LMODE(s,p,c,w)
  11. //---------------------------------------------------------------------------
  12.  
  13. EXT(202) void DrawInv(         // 
  14.              ushort typ,       // typ rysowanego elementu
  15.              void   *ptr,      // dane elementu
  16.              ushort lmode,     // atrybuty linii (patrz LMODE)
  17.              ushort atype);    // typ elementu dla atrybutów
  18.  
  19. Opis:
  20.     Funkcja rysuje pojedynczy element i wprowadza jego dane do listy 
  21.     tymczasowej (po wybraniu 'redraw' b⌐dzie on widoczny na ekranie).
  22.     Parametr 'lmode' definiuje styl, kolor i gruboÿå linii.
  23.     Jeÿli któremuÿ z atrybutów zostanie nadana wartoÿå '0', wartoÿå ta
  24.     zostanie pobrana ze standardowego (aktualnego) ustawienia tych danych
  25.     z parametru 'atype'.
  26.  
  27. LMODE(s,p,c,w)
  28.  
  29. Opis:
  30.     s = styl linii
  31.     p = pikslowa opcja przedstawienia elementu
  32.     c = kolor
  33.     w = gruboÿå linii
  34.     Dla funkcji 'DrawInv()' pikslowa opcja musi byå ustawiona 'PIX_XOR'. 
  35.     Pozostaêe wartoÿci mogÑ byå staêymi lub równaå si⌐ '0' (w takim przypadku
  36.     zostanÑ pobrane aktualnie w programie ustawione wartoÿci).
  37.  
  38. Przykêady wywoêania.
  39.     Linia ciÑgêa, biaêa, cienka:
  40.     DrawInv(E_LINE,&line,LMODE(1,PIX_XOR,WHITE,1),0);
  41.  
  42.     Linia narysowana z atrybutami elementu 'type':
  43.     DrawInv(E_LINE,&line,LMODE(0,PIX_XOR,0,0),type);
  44. //---------------------------------------------------------------------------
  45.  
  46. EXT(216) void EraseInv(void);
  47.  
  48. Opis:
  49.     Funkcja kasuje wszystkie elementy stworzone przy pomocy 'DrawInv()'.
  50.  
  51. Przykêad wywoêania:
  52.     EraseInv();
  53. //---------------------------------------------------------------------------
  54.  
  55. EXT(221) short Blink(          // 
  56.              tCallBack func,   // funkcja Callback 
  57.              void      *para); // wska½nik funkcji Callback 
  58.  
  59. Opis:
  60.     Funkcja sêu╛y do wêÑczenia migotania wybranych elementów (i nie tylko).
  61.     Funkcja CallBack jest funkcjÑ wywoêywanÑ przez Blink tak dêugo, a╛ 
  62.     u╛ytkownik nie przerwie dziaêania. 
  63.     W przypadku naciÿni⌐cia lewego klawisza myszy lub 'ENTER' return = TRUE,
  64.     W przypadku naciÿni⌐cia prawego klawisza myszy lub 'ESC' return = FALSE.
  65.     
  66.     Wartoÿå powrotna funkcji CallBack nie jest kontrolowana !
  67.  
  68. Przykêad wywoêania:
  69.     if ( Blink(okrag,&data) )
  70. //---------------------------------------------------------------------------
  71. */
  72.  
  73. //---------------------------------------------------------------------------
  74. #include "std.h"
  75. #include "megatyp.h"
  76. #include "megacad.h"
  77. //---------------------------------------------------------------------------
  78. struct _data
  79. {
  80.     t_circle cir;
  81.     int      j;
  82. };
  83. //---------------------------------------------------------------------------
  84. short okrag(void *argptr )
  85. {
  86.     struct _data *p;
  87.  
  88.     p = argptr;
  89.     if ( p->j != 0 )
  90.         EraseInv();
  91.     else
  92.         DrawInv(E_CIRCLE,&p->cir,LMODE(1,PIX_XOR,BRIGHT_WHITE,1),0);
  93.     p->j ^= 1;
  94.     return(0);
  95. }
  96. //---------------------------------------------------------------------------
  97. short main(char *filename,char *args )
  98. {
  99.     struct _data data;
  100.  
  101.     data.cir.xm = 100.0;
  102.     data.cir.ym = 100.0;
  103.     data.cir.rd = 10.0;
  104.     data.j      = 0;
  105.  
  106.     if ( Blink(okrag,&data) )
  107.         Message("lewy klawisz lub ENTER","",NULL,NULL,"ok",3);
  108.     else
  109.         Message("prawy klawisz lub ESC","",NULL,NULL,"ok",3);
  110.     return(0);
  111. }
  112. //---------------------------------------------------------------------------
  113.