root/trunk/freetype/examples/testname.d

Revision 22, 2.5 kB (checked in by JJR, 7 years ago)

* Added Dynamic FreeType 2 Bindings for Win32 and Linux

Line 
1 module testname;
2
3 import freetype.ft;
4 import std.stdio;
5 import std.string;
6
7 int main(char[][] args)
8 {
9     FT_Library          fontLibrary;
10     FT_Face             fontFace;
11     FT_Bitmap           bitmap;
12     FT_GlyphSlot        curGlyph;
13     FT_Glyph_Metrics    glyphMetrics;
14     FT_Error            err;
15     FT_Glyph            glyphObject;
16
17     int         glyphIndex;
18     int         numChars;
19     char[256]   charName;
20
21     if (args.length != 2)
22     {
23         writefln("Not enough arguments on command line!");
24         return 1;
25     }
26     if ( FT_Init_FreeType( &fontLibrary ) )
27     {
28         writefln("FT_Init_FreeType failed: ", __LINE__);
29         return 1;
30     }
31
32     writefln("FT_Init_FreeType success!");
33
34     if ( (err = FT_New_Face( fontLibrary, toStringz(args[1]), 0, &fontFace )) != 0 )
35     {
36         writefln("FT_New_Face failed: ", __LINE__);
37         writefln((*fontLibrary).sizeof);
38         writefln( err );
39         return 1;
40     }
41
42     writefln("FT_New_Face success!");
43
44     if ( FT_Set_Char_Size( fontFace, 0, 768, 300, 300 ) )
45     {
46         writefln("FT_Set_Char_Size failed: ", __LINE__ );
47         return 1;
48     }
49
50     writefln("FT_Set_Char_Size success!");
51
52     numChars = cast(int)fontFace.num_glyphs;
53
54     FT_Set_Transform( fontFace, null, null );
55
56     writefln("FT_Set_Transform success!");
57     writefln();
58    
59     for ( glyphIndex = 0; glyphIndex < numChars; glyphIndex++ )
60     {
61         if ( FT_Load_Glyph( fontFace, glyphIndex, FT_LOAD_DEFAULT ) )
62         {
63             writefln(" FT_Load_Glyph failed:", __LINE__ );
64             return 1;
65         }
66
67         // writefln( "FT_Load_Glyph success!" );
68
69         curGlyph = fontFace.glyph;
70
71         if ( curGlyph.format != FT_Glyph_Format.FT_GLYPH_FORMAT_BITMAP )
72         {
73             if ( FT_Render_Glyph( fontFace.glyph, FT_Render_Mode.FT_RENDER_MODE_MONO ) )
74             {
75                 writefln("FT_Render_Glyph failed: ", __LINE__ );
76                 return 1;
77             }
78         //  writefln( "FT_Render_Glyph success!" );
79         }
80
81         if ( FT_Get_Glyph_Name( fontFace, glyphIndex, charName, 16 ) )
82         {
83             writefln( "FT_Get_Glyph_Name failed: ", __LINE__ );
84             return 1;
85         }
86
87         // writefln( "FT_Get_Glyph_Name success!" );
88
89         bitmap = curGlyph.bitmap;
90         glyphMetrics = curGlyph.metrics;
91
92         writefln ( "Glyph ", glyphIndex ,
93                    "  name ", toString(charName) );
94        
95         writefln ( glyphMetrics.horiBearingX/64, " ",
96                    glyphMetrics.horiBearingY/64, " ",
97                    glyphMetrics.horiAdvance/64, " ",
98                    bitmap.width, " ", bitmap.rows );
99     }
100    
101     if (FT_Get_Glyph( curGlyph, &glyphObject ) )
102     {
103         writefln( "FT_Get_Glyph Failed: ", __LINE__ );
104         return 1;
105     }
106
107     if (glyphObject)
108         writefln( "glyphObject is NOT null!" );
109
110     writefln();
111     writefln();
112     writefln( "FT_Get_Glyph success!" );
113
114     return 0;
115 }
Note: See TracBrowser for help on using the browser.