Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00015
00016
00017 #if !defined(OPENNURBS_FONT_INC_)
00018 #define OPENNURBS_FONT_INC_
00019
00020 class ON_CLASS ON_Font : public ON_Object
00021 {
00022 ON_OBJECT_DECLARE(ON_Font);
00023 public:
00024 ON_Font();
00025 ~ON_Font();
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043 bool CreateFontFromFaceName(
00044 const wchar_t* face_name,
00045 bool bBold,
00046 bool bItalic
00047 );
00048
00049 #if defined(ON_OS_WINDOWS_GDI)
00050 ON_Font( const LOGFONT& logfont );
00051 ON_Font& operator=( const LOGFONT& logfont );
00052 #endif
00053
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077 ON_BOOL32 IsValid( ON_TextLog* text_log = NULL ) const;
00078
00079
00080 void Dump( ON_TextLog& ) const;
00081
00082
00083 ON_BOOL32 Write(
00084 ON_BinaryArchive&
00085 ) const;
00086
00087
00088 ON_BOOL32 Read(
00089 ON_BinaryArchive&
00090 );
00091
00092
00093 ON_UUID ModelObjectId() const;
00094
00096
00097
00098
00099 enum
00100 {
00101
00102 #if defined(ON_OS_WINDOWS_GDI)
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119 face_name_size = 65,
00120
00121
00122 bold_weight = FW_BOLD,
00123 medium_weight = FW_MEDIUM,
00124 normal_weight = FW_NORMAL,
00125 light_weight = FW_LIGHT,
00126
00127
00128 default_charset = DEFAULT_CHARSET,
00129 symbol_charset = SYMBOL_CHARSET,
00130
00131 #else
00132
00133 face_name_size = 65,
00134
00135 bold_weight = 700,
00136 medium_weight = 500,
00137 normal_weight = 400,
00138 light_weight = 300,
00139
00140 default_charset = 1,
00141 symbol_charset = 2,
00142
00143 #endif
00144
00145 normal_font_height = 256
00146 };
00147
00148
00149 static
00150 const double m_default_linefeed_ratio;
00151
00152 static
00153 const int m_metrics_char;
00154
00155
00156
00157
00158
00159
00160
00161 static
00162 bool IsSymbolFontFaceName(
00163 const wchar_t* facename
00164 );
00165
00166 void SetFontName( const wchar_t* );
00167 void SetFontName( const char* );
00168
00169 void GetFontName( ON_wString& ) const;
00170 const wchar_t* FontName() const;
00171
00172 void SetFontIndex(int);
00173 int FontIndex() const;
00174
00175
00176
00177
00178
00179 double LinefeedRatio() const;
00180
00181 void SetLinefeedRatio( double linefeed_ratio );
00182
00183 bool SetFontFaceName( const wchar_t* );
00184 bool SetFontFaceName( const char* );
00185
00186 void GetFontFaceName( ON_wString& ) const;
00187 const wchar_t* FontFaceName() const;
00188
00189 int FontWeight() const;
00190 void SetFontWeight( int);
00191
00192 bool IsItalic() const;
00193 void SetIsItalic( bool );
00194 void SetItalic( bool );
00195
00196 bool IsBold() const;
00197 void SetBold( bool );
00198
00199
00200 bool IsUnderlined() const;
00201 void SetUnderlined( bool );
00202
00203 void Defaults();
00204
00205
00206
00207
00208
00209
00210 int HeightOfI() const;
00211
00212
00213
00214
00215
00216
00217 int HeightOfLinefeed() const;
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230 double AscentRatio() const;
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247 bool CompareFontCharacteristics( ON_Font& font_to_compare, bool bCompareName) const;
00248
00249 #if defined(ON_OS_WINDOWS_GDI)
00250 bool SetLogFont( const LOGFONT& logfont );
00251 const LOGFONT& LogFont() const;
00252 #endif
00253
00254 public:
00255 ON_wString m_font_name;
00256 int m_font_weight;
00257 bool m_font_italic;
00258 bool m_font_underlined;
00259 double m_linefeed_ratio;
00260 int m_font_index;
00261 ON_UUID m_font_id;
00262 wchar_t m_facename[face_name_size];
00263
00264 public:
00265
00266
00267
00268
00269
00270
00271
00272 void UpdateImplementationSettings();
00273 #if defined(ON_OS_WINDOWS_GDI)
00274
00275 LOGFONT m_logfont;
00276 #endif
00277
00278 private:
00279
00280 int m_I_height;
00281
00282 };
00283
00284 #endif