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
C/C++ Source or Header  |  1995-09-01  |  4KB  |  122 lines

  1. /*                      LEKCJA07.C
  2. //---------------------------------------------------------------------------
  3. Temat:
  4.         Definiowanie elementu TEKST
  5. //---------------------------------------------------------------------------
  6. Funkcja:
  7.         EXT(213) void GetTextVal(      
  8. //---------------------------------------------------------------------------
  9.  
  10.    Wprowadzanie tekstu do rysunku na pozór wydaje si⌐ niezwykle skomplikowane
  11.    ze wzgl⌐du na iloÿå zmiennych w peêni definiujÑcych typ T_TEXT. Jednak╛e 
  12.    w praktyce wykorzystuje si⌐ zazwyczaj standardowo zdefiniowane wartoÿci.
  13.    Ogromnie uêatwia prac⌐ skorzystanie z funkcji 'GetTextVal' opisanej w 
  14.    nast⌐pnym rozdziale. W pliku 'MEGATYP.H' zdefiniowana jest struktura 
  15.    budowy typu  't_text'
  16.  
  17. typedef struct _text
  18. {
  19.     t_txtval val;        // atrybuty tekstu
  20.     t_txtfnt fnt;        // font tekstu
  21.     double   tx;         // wspóêrz⌐dna X poczÑtku tekstu
  22.     double   ty;         // wspóêrz⌐dna Y poczÑtku tekstu 
  23.     double   dx1;        // wektor podstawy wartoÿå X
  24.     double   dy1;        // wektor podstawy wartoÿå Y
  25.     double   dx2;        // wektor pochylenia wartoÿå X 
  26.     double   dy2;        // wektor pochylenia wartoÿå Y
  27.     ushort   numl;       // iloÿå linijek tekstu
  28.     char     _far *str;  // tekst
  29. } t_text;
  30.  
  31. typedef struct _txtval
  32. {
  33.     double w1;           // kÑt liter
  34.     double w2;           // kÑt linii tekstowej
  35.     double dx;           // szerokoÿå liter
  36.     double dy;           // wysokoÿå liter
  37.     double sx;           // szerokoÿå odst⌐pu mi⌐dzy literami
  38.     double ld;           // odst⌐p mi⌐dzy liniami tekstu
  39. } t_txtval;
  40.  
  41. typedef struct _txtfnt
  42. {
  43.     uchar name[32];       // nazwa TRUETYPE, nazwa pliku z fontem wektorowym
  44.     uchar CharSet;        // wartoÿå - opis dalej
  45.     uchar PitchAndFamily; // wartoÿå - opis dalej
  46.     uchar System;         // wartoÿå - opis dalej
  47.     uchar Attribs;        // wartoÿå - opis dalej
  48. } t_txtfnt;
  49.  
  50.  
  51. // wartoÿci zmiennej 'System' 
  52. #define GT_TRUETYPE      0
  53. #define GT_VECTOR        1
  54.  
  55. // wartoÿci zmiennej 'PitchAndFamily'
  56. #define GT_FFDONTCARE    0x00
  57. #define GT_ROMAN         0x10
  58. #define GT_SWISS         0x20
  59. #define GT_MODERN        0x30
  60. #define GT_SCRIPT        0x40
  61. #define GT_DECORATIVE    0x50
  62.  
  63. #define GT_FIXED         0x01
  64. #define GT_VARIABLE      0x02
  65.  
  66. // wartoÿci zmiennej 'CharSet'
  67. #define GT_ANSI          0
  68. #define GT_SYMBOL        2
  69. #define GT_ASIAN         3
  70. #define GT_OEM           255
  71.  
  72. // wartoÿci zmiennej 'Attribs' bity
  73. #define GT_ITALIC        (1<<0)
  74. #define GT_STRIKEOUT     (1<<1)
  75. #define GT_UNDERLINE     (1<<2)
  76. #define GT_BOLD          (1<<3)
  77. #define GT_ISDOWN        (1<<4)
  78. //---------------------------------------------------------------------------
  79.  
  80.    Nast⌐pnym uêatwieniem przy definiowaniu tekstu jest funkcja 'GetTextVal'
  81.    wczytujÑca aktualnie ustawione parametry tekstu 
  82.  
  83. EXT(213) void GetTextVal(      // 
  84.              ushort type,      // linia tekstu lub blok tekstowy
  85.              ushort init,      // inicjalizacja TRUE
  86.                                // tylko policzenie prostokÑta FALSE
  87.              t_text *txt);     // dane tekstu
  88.  
  89. */
  90. //---------------------------------------------------------------------------
  91. #include "std.h"
  92. #include "megatyp.h"
  93. #include "megacad.h"
  94. //---------------------------------------------------------------------------
  95. int DrwTxt(void *para)
  96. {
  97.     t_text  *txtdata;
  98.     txtdata = para;
  99.     DrawInv(E_TXTLIN,txtdata,LMODE(0,PIX_XOR,0,0),E_TXTLIN);
  100.     return(0);
  101. }
  102. //---------------------------------------------------------------------------
  103. short main(char *filename, char *args)
  104. {
  105.     t_text  txtdata;
  106.     char    str[255];
  107.     SetFuncText("wpisywanie tekstu");
  108.     if(StringInput("Podanie linii tekstu",str,255))
  109.     {
  110.         txtdata.str = str;
  111.         GetTextVal(E_TXTLIN,TRUE,&txtdata);
  112.         SetFuncText("wstawianie tekstu");
  113.         MouseHelp("umieÿå tekst","powrót",HLP_INV(0,0,0));
  114.         if(GetPntInv(&txtdata.tx,0,DrwTxt,&txtdata))
  115.         {
  116.             CreateEntity(E_TXTLIN,NULL,&txtdata);
  117.             savecount();
  118.         }
  119.     }
  120. }
  121. //---------------------------------------------------------------------------
  122.