home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 2001 December
/
pcwk12201b.iso
/
Reklamy
/
CAD-Projekt
/
MegaCAD-4_5
/
CC
/
LEKCJA07.C_
/
LEKCJA07.C
Wrap
C/C++ Source or Header
|
1995-09-01
|
4KB
|
122 lines
/* 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();
}
}
}
//---------------------------------------------------------------------------