home *** CD-ROM | disk | FTP | other *** search
- /* LEKCJA10.C
- //---------------------------------------------------------------------------
- Temat:
- Wizualizacja podczas rysowania
- //---------------------------------------------------------------------------
- Funkcje:
- EXT(202) void DrawInv(
- EXT(216) void EraseInv(
- EXT(221) short Blink(
- LMODE(s,p,c,w)
- //---------------------------------------------------------------------------
-
- EXT(202) void DrawInv( //
- ushort typ, // typ rysowanego elementu
- void *ptr, // dane elementu
- ushort lmode, // atrybuty linii (patrz LMODE)
- ushort atype); // typ elementu dla atrybutów
-
- Opis:
- Funkcja rysuje pojedynczy element i wprowadza jego dane do listy
- tymczasowej (po wybraniu 'redraw' b⌐dzie on widoczny na ekranie).
- Parametr 'lmode' definiuje styl, kolor i gruboÿå linii.
- Jeÿli któremuÿ z atrybutów zostanie nadana wartoÿå '0', wartoÿå ta
- zostanie pobrana ze standardowego (aktualnego) ustawienia tych danych
- z parametru 'atype'.
-
- LMODE(s,p,c,w)
-
- Opis:
- s = styl linii
- p = pikslowa opcja przedstawienia elementu
- c = kolor
- w = gruboÿå linii
- Dla funkcji 'DrawInv()' pikslowa opcja musi byå ustawiona 'PIX_XOR'.
- Pozostaêe wartoÿci mogÑ byå staêymi lub równaå si⌐ '0' (w takim przypadku
- zostanÑ pobrane aktualnie w programie ustawione wartoÿci).
-
- Przykêady wywoêania.
- Linia ciÑgêa, biaêa, cienka:
- DrawInv(E_LINE,&line,LMODE(1,PIX_XOR,WHITE,1),0);
-
- Linia narysowana z atrybutami elementu 'type':
- DrawInv(E_LINE,&line,LMODE(0,PIX_XOR,0,0),type);
- //---------------------------------------------------------------------------
-
- EXT(216) void EraseInv(void);
-
- Opis:
- Funkcja kasuje wszystkie elementy stworzone przy pomocy 'DrawInv()'.
-
- Przykêad wywoêania:
- EraseInv();
- //---------------------------------------------------------------------------
-
- EXT(221) short Blink( //
- tCallBack func, // funkcja Callback
- void *para); // wska½nik funkcji Callback
-
- Opis:
- Funkcja sêu╛y do wêÑczenia migotania wybranych elementów (i nie tylko).
- Funkcja CallBack jest funkcjÑ wywoêywanÑ przez Blink tak dêugo, a╛
- u╛ytkownik nie przerwie dziaêania.
- W przypadku naciÿni⌐cia lewego klawisza myszy lub 'ENTER' return = TRUE,
- W przypadku naciÿni⌐cia prawego klawisza myszy lub 'ESC' return = FALSE.
-
- Wartoÿå powrotna funkcji CallBack nie jest kontrolowana !
-
- Przykêad wywoêania:
- if ( Blink(okrag,&data) )
- //---------------------------------------------------------------------------
- */
-
- //---------------------------------------------------------------------------
- #include "std.h"
- #include "megatyp.h"
- #include "megacad.h"
- //---------------------------------------------------------------------------
- struct _data
- {
- t_circle cir;
- int j;
- };
- //---------------------------------------------------------------------------
- short okrag(void *argptr )
- {
- struct _data *p;
-
- p = argptr;
- if ( p->j != 0 )
- EraseInv();
- else
- DrawInv(E_CIRCLE,&p->cir,LMODE(1,PIX_XOR,BRIGHT_WHITE,1),0);
- p->j ^= 1;
- return(0);
- }
- //---------------------------------------------------------------------------
- short main(char *filename,char *args )
- {
- struct _data data;
-
- data.cir.xm = 100.0;
- data.cir.ym = 100.0;
- data.cir.rd = 10.0;
- data.j = 0;
-
- if ( Blink(okrag,&data) )
- Message("lewy klawisz lub ENTER","",NULL,NULL,"ok",3);
- else
- Message("prawy klawisz lub ESC","",NULL,NULL,"ok",3);
- return(0);
- }
- //---------------------------------------------------------------------------
-