home *** CD-ROM | disk | FTP | other *** search
- /* LEKCJA07.C
- //---------------------------------------------------------------------------
- Temat:
- Definiowanie elementu TEKST
- //---------------------------------------------------------------------------
- Funkcja:
- EXT(213) void GetTextVal(
- //---------------------------------------------------------------------------
-
- Wprowadzanie tekstu do rysunku na pozór wydaje si⌐ niezwykle skomplikowane
- ze wzgl⌐du na iloÿå zmiennych w peêni definiujÑcych typ T_TEXT. Jednak╛e
- w praktyce wykorzystuje si⌐ zazwyczaj standardowo zdefiniowane wartoÿci.
- Ogromnie uêatwia prac⌐ skorzystanie z funkcji 'GetTextVal' opisanej w
- nast⌐pnym rozdziale. W pliku 'MEGATYP.H' zdefiniowana jest struktura
- budowy typu 't_text'
-
- typedef struct _text
- {
- t_txtval val; // atrybuty tekstu
- t_txtfnt fnt; // font tekstu
- double tx; // wspóêrz⌐dna X poczÑtku tekstu
- double ty; // wspóêrz⌐dna Y poczÑtku tekstu
- double dx1; // wektor podstawy wartoÿå X
- double dy1; // wektor podstawy wartoÿå Y
- double dx2; // wektor pochylenia wartoÿå X
- double dy2; // wektor pochylenia wartoÿå Y
- ushort numl; // iloÿå linijek tekstu
- char _far *str; // tekst
- } t_text;
-
- typedef struct _txtval
- {
- double w1; // kÑt liter
- double w2; // kÑt linii tekstowej
- double dx; // szerokoÿå liter
- double dy; // wysokoÿå liter
- double sx; // szerokoÿå odst⌐pu mi⌐dzy literami
- double ld; // odst⌐p mi⌐dzy liniami tekstu
- } t_txtval;
-
- typedef struct _txtfnt
- {
- uchar name[32]; // nazwa TRUETYPE, nazwa pliku z fontem wektorowym
- uchar CharSet; // wartoÿå - opis dalej
- uchar PitchAndFamily; // wartoÿå - opis dalej
- uchar System; // wartoÿå - opis dalej
- uchar Attribs; // wartoÿå - opis dalej
- } t_txtfnt;
-
-
- // wartoÿci zmiennej 'System'
- #define GT_TRUETYPE 0
- #define GT_VECTOR 1
-
- // wartoÿci zmiennej 'PitchAndFamily'
- #define GT_FFDONTCARE 0x00
- #define GT_ROMAN 0x10
- #define GT_SWISS 0x20
- #define GT_MODERN 0x30
- #define GT_SCRIPT 0x40
- #define GT_DECORATIVE 0x50
-
- #define GT_FIXED 0x01
- #define GT_VARIABLE 0x02
-
- // wartoÿci zmiennej 'CharSet'
- #define GT_ANSI 0
- #define GT_SYMBOL 2
- #define GT_ASIAN 3
- #define GT_OEM 255
-
- // wartoÿci zmiennej 'Attribs' bity
- #define GT_ITALIC (1<<0)
- #define GT_STRIKEOUT (1<<1)
- #define GT_UNDERLINE (1<<2)
- #define GT_BOLD (1<<3)
- #define GT_ISDOWN (1<<4)
- //---------------------------------------------------------------------------
-
- Nast⌐pnym uêatwieniem przy definiowaniu tekstu jest funkcja 'GetTextVal'
- wczytujÑca aktualnie ustawione parametry tekstu
-
- EXT(213) void GetTextVal( //
- ushort type, // linia tekstu lub blok tekstowy
- ushort init, // inicjalizacja TRUE
- // tylko policzenie prostokÑta FALSE
- t_text *txt); // dane tekstu
-
- */
- //---------------------------------------------------------------------------
- #include "std.h"
- #include "megatyp.h"
- #include "megacad.h"
- //---------------------------------------------------------------------------
- int DrwTxt(void *para)
- {
- t_text *txtdata;
- txtdata = para;
- DrawInv(E_TXTLIN,txtdata,LMODE(0,PIX_XOR,0,0),E_TXTLIN);
- return(0);
- }
- //---------------------------------------------------------------------------
- short main(char *filename, char *args)
- {
- t_text txtdata;
- char str[255];
- SetFuncText("wpisywanie tekstu");
- if(StringInput("Podanie linii tekstu",str,255))
- {
- txtdata.str = str;
- GetTextVal(E_TXTLIN,TRUE,&txtdata);
- SetFuncText("wstawianie tekstu");
- MouseHelp("umieÿå tekst","powrót",HLP_INV(0,0,0));
- if(GetPntInv(&txtdata.tx,0,DrwTxt,&txtdata))
- {
- CreateEntity(E_TXTLIN,NULL,&txtdata);
- savecount();
- }
- }
- }
- //---------------------------------------------------------------------------
-