0022922: Clean up warnings on uninitialized / unused variables
[occt.git] / src / WNT / WNT_FontMapEntry.cxx
1 #include <WNT_FontMapEntry.ixx>
2
3 #include <InterfaceGraphic_WNT.hxx>
4
5 #include <stdlib.h>
6 #include <string.h>                                              
7
8 // character for field separator
9 #define FS "-"
10 // character for default value
11 #define DV "*"
12
13 WNT_FontMapEntry :: WNT_FontMapEntry ( const Standard_CString aFontName )
14 {
15   int   i;
16   char* p;
17
18   char* fName = new char[ strlen ( aFontName ) + 1 ];
19
20   strcpy ( fName, aFontName );
21   ZeroMemory (  &myLogFont, sizeof ( WNT_LogFont )  );
22
23   myLogFont.lfCharSet        = DEFAULT_CHARSET;
24   myLogFont.lfOutPrecision   = OUT_DEFAULT_PRECIS;
25   myLogFont.lfClipPrecision  = CLIP_DEFAULT_PRECIS;
26   myLogFont.lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE;
27   myLogFont.lfQuality        = PROOF_QUALITY;
28
29   p = strtok ( fName, FS );
30   if (  p && strcmp ( p, DV )  )
31     myLogFont.lfHeight = atol ( p );
32
33   p = strtok ( NULL, FS );
34   if (  p && strcmp ( p, DV )  )
35     myLogFont.lfWidth = atol ( p );
36
37   p = strtok ( NULL, FS );
38   if (  p && strcmp ( p, DV )  )
39     myLogFont.lfEscapement = atol ( p );
40
41   p = strtok ( NULL, FS );
42   if (  p && strcmp ( p, DV )  )
43     myLogFont.lfOrientation = atol ( p );
44
45   p = strtok ( NULL, FS );
46   if (  p && strcmp ( p, DV )  )
47     myLogFont.lfWeight = atol ( p );
48
49   p = strtok ( NULL, FS );
50   if (  p && strcmp ( p, DV )  )
51     myLogFont.lfItalic = ( BYTE )atoi ( p );
52
53   p = strtok ( NULL, FS );
54   if (  p && strcmp ( p, DV )  )
55     myLogFont.lfUnderline = ( BYTE )atoi ( p );
56
57   p = strtok ( NULL, FS );
58   if (  p && strcmp ( p, DV )  )
59     myLogFont.lfStrikeOut = ( BYTE )atoi ( p );
60
61   p = strtok ( NULL, FS );
62   if (  p && strcmp ( p, DV )  )
63     myLogFont.lfCharSet = ( BYTE )atoi ( p );
64
65   p = strtok ( NULL, FS );
66   if (  p && strcmp ( p, DV )  )
67     myLogFont.lfOutPrecision = ( BYTE )atoi ( p );
68
69   p = strtok ( NULL, FS );
70   if (  p && strcmp ( p, DV )  )
71     myLogFont.lfClipPrecision = ( BYTE )atoi ( p );
72
73   p = strtok ( NULL, FS );
74   if (  p && strcmp ( p, DV )  )
75     myLogFont.lfQuality = ( BYTE )atoi ( p );
76
77   p = strtok ( NULL, FS );
78   if (  p && strcmp ( p, DV )  )
79     myLogFont.lfPitchAndFamily = ( BYTE )atoi ( p );
80
81   p = strtok ( NULL, FS );
82   if (  p && strcmp ( p, DV )  ) {
83     i = strlen ( p );
84     strncpy (  myLogFont.lfFaceName, p, ( i < LF_FACESIZE ) ? i : LF_FACESIZE  );
85   }  // end if
86
87   myLogFont.lfOutPrecision |= OUT_TT_ONLY_PRECIS;
88   myHandle = CreateFontIndirect ( &myLogFont );
89   delete [] fName;
90   if ( !myHandle )
91     WNT_FontMapEntryDefinitionError :: Raise ( "Unable to load font" );
92 }  // end constructor
93
94 void WNT_FontMapEntry :: Destroy () {
95
96  DeleteObject ( myHandle );
97
98 }  // end WNT_FontMapEntry :: Destroy 
99
100 Aspect_Handle WNT_FontMapEntry :: HFont () const {
101
102  return myHandle;
103
104 }  // WNT_FontMapEntry :: HFont
105
106 Aspect_Handle WNT_FontMapEntry :: SetAttrib (
107                                 const WNT_Dword& aFlags,
108                                 const Standard_Address aData,
109                                 const Standard_Boolean aRepl
110                                ) {
111
112  HFONT      hFont;
113  LOGFONT    lf = myLogFont;
114  FONT_DATA* fd = ( FONT_DATA* )aData;
115
116  if ( aFlags & faUnderlined )
117
118   lf.lfUnderline = fd -> fdUnderlined;
119
120  if ( aFlags & faItalic )
121
122   lf.lfItalic = fd -> fdItalic;
123
124  if ( aFlags & faStrikeOut )
125
126   lf.lfStrikeOut = fd -> fdStrikeOut;
127
128  if ( aFlags & faBold )
129
130   lf.lfWeight = fd -> fdBold;
131
132  if ( aFlags & faHeight )
133
134   lf.lfHeight = fd -> fdHeight;
135
136  if ( aFlags & faAngle ) {
137
138   lf.lfEscapement  = fd -> fdOrientation;
139   lf.lfOrientation = fd -> fdOrientation;
140
141  }  // end if
142
143  if ( aFlags & faWidth )
144
145   lf.lfWidth = fd -> fdWidth;
146
147  if ( aFlags & faSlant )
148
149   lf.lfOrientation -= ( fd -> fdSlant * 10 );
150
151  hFont = CreateFontIndirect ( &lf );
152
153  if ( hFont != NULL && aRepl ) {
154  
155   DeleteObject ( myHandle );
156   myHandle  = hFont;
157   myLogFont = lf;
158
159  }  // end if
160
161  return hFont;
162
163 }  // WNT_FontMapEntry :: SetAttrib