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
Wrap
C/C++ Source or Header
|
1995-09-01
|
4KB
|
113 lines
/* 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);
}
//---------------------------------------------------------------------------