FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

FreeType
Goto page 1, 2  Next
 
Post new topic   Reply to topic     Forum Index -> Derelict
View previous topic :: View next topic  
Author Message
trevorparscal



Joined: 25 May 2005
Posts: 73
Location: Bay Area, CA (USA)

PostPosted: Wed May 25, 2005 7:04 am    Post subject: FreeType Reply with quote

I am working on a derelict style FreeType 2 port, but to be honest, i am feeling like I am in over my head.

I have about 6 hours in, and I only got about 4 of the 77 files done.

Is there an automated way this is done, is there a specific way to get around porting EVERYTHING?

I would really love to have a real freetype binding, but I am getting close to just writing a simple wrapper and binding that.

Let me know if anyone has any advice on porting large libraries like FreeType..

And yes I know thay SDL_ttf is already ported, but I am working with GLFW so SDL doesn't help me.. Or can I run them together?... I don't think I can.

Well, let me know.

Thanks,
Trevor Parscal
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
JJR



Joined: 22 Feb 2004
Posts: 1104

PostPosted: Wed May 25, 2005 7:38 am    Post subject: Re: FreeType Reply with quote

trevorparscal wrote:
I am working on a derelict style FreeType 2 port, but to be honest, i am feeling like I am in over my head.

I have about 6 hours in, and I only got about 4 of the 77 files done.

Is there an automated way this is done, is there a specific way to get around porting EVERYTHING?


I feel for you. It is a lot of work. When I did the glfw port, I had it a lot easier because its size was relatively small compared to other packages.

Manually plugging in large libraries in the Derelict style is overwhelming. I don't have any automated tool for the job, but I'd say such a tool is quickly becoming a very good idea. I don't know if Aldacron has such a tool either. It's been my impression that he's done most of Derelict manually.

trevorparscal wrote:
I would really love to have a real freetype binding, but I am getting close to just writing a simple wrapper and binding that.


If you can write even a simple static wrapper for freetype, that's more than half the battle. When I was working on converting all of the GTK+ functions in Ant's DUI to a dynamic loader format, I decided to create a python script that parsed his DUI files looking for "extern(C)" sections. There was just too much work to even consider doing in manually.

When the script found the extern(C) sections, it grabbed the function definitions, rearranged them into function pointers, and output the results to a new file. It also created the necessary data structure for that library. It easily traversed a whole directory full of gtk definitions in a matter of seconds.

This tool was designed for another project and does not output the same dynamic loader format as Derelict, but it could work for Derelict with the correct modifications. It does depend on some tool having already pulled the function defintions out of C header file -- perhaps the hardest part.

trevorparscal wrote:
Let me know if anyone has any advice on porting large libraries like FreeType..


The hardest part is gathering the functions definitions from C headers full of macro definitions. But if you can get it to the point of a simple D static import lib, the rest is fairly easy. I think I could make a script to manage the rest.

So maybe one can use h2d (on this site) to do that? Likely it will be necessary to run the header through a preprocessor first to inline all "#defines " in the file. I haven't tried the h2d tool yet, but I should have a look. This is one reason I abhor the use of C macros. It makes such disturbing mess of things, and it's hard to parse.

trevorparscal wrote:
And yes I know thay SDL_ttf is already ported, but I am working with GLFW so SDL doesn't help me.. Or can I run them together?... I don't think I can.


I'm not sure if you can run them together. But I don't see why not (yet). Maybe give it a try and tell me how it goes? But don't blame me if it goes poof... even if I do have a problem with golden screwdrivers Smile .

Which platform are you programming on?

-JJR
Back to top
View user's profile Send private message
trevorparscal



Joined: 25 May 2005
Posts: 73
Location: Bay Area, CA (USA)

PostPosted: Wed May 25, 2005 8:08 am    Post subject: Reply with quote

I am programing on windows xp using eclipse and writing batch files that use build to compile my programs.

I am trying my hardest to not get stuck in something that is platform dependent, but I also dislike the heavy overhead of SDL, so GLFW seemed like a worthy move. However, now I am suffering without text rendering, and it's really delaying my whole project.

Anyhoo, I couldn't seem to do anything with h2d cause it's for linux only. I hope to get this port done, but I am getting so frustrated with the sheer complexity of FreeType, I am wishing something more simple existed.

Oh, and SDL and SDL_ttf being compiled with GLFW cause the app to be REALLY slow loading, probably cause it's even HEAVIER! I can't get SDL_ttf on it's own, it will complain about SDL.dll cause I never loaded it with the loader.

Maybe I should write a SDL_ttf style library like TrueType for D, and it will have the simplified functionality of FreeType without the excessive overhead. For instance, the freetype DLL is 450k. If I made an SDL_ttf style library, only it was independent of SDL, i would only be using a portion of that code, so it could be even smaller than SDL_ttf's DLL size of 340k. Faster loading, less ram wastage...

But I fear I would have to write the thing in C, which I hate now that I am spoiled with D.

A compiled C++ DLL is incompatible with D? I am unsure on that.. Maybe you could enlighten me there.

Thanks,
Trevor Parscal
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
JJR



Joined: 22 Feb 2004
Posts: 1104

PostPosted: Wed May 25, 2005 8:26 am    Post subject: Reply with quote

trevorparscal wrote:
I am programing on windows xp using eclipse and writing batch files that use build to compile my programs.


Okay... I've worked with D and eclipse before... but found it too buggy/slow for some reason.

trevorparscal wrote:
I am trying my hardest to not get stuck in something that is platform dependent, but I also dislike the heavy overhead of SDL, so GLFW seemed like a worthy move. However, now I am suffering without text rendering, and it's really delaying my whole project.


I'm not aware of lighter weight solutions beyond freetype that are crossplatform.

trevorparscal wrote:
Anyhoo, I couldn't seem to do anything with h2d cause it's for linux only. I hope to get this port done, but I am getting so frustrated with the sheer complexity of FreeType, I am wishing something more simple existed.


Hmm... I looked at h2d also and realized that it is linux-only ATM. I was hoping it was a tool programmed in D, but apparently not. D really needs a more advanced tool in this area.

trevorparscal wrote:
Oh, and SDL and SDL_ttf being compiled with GLFW cause the app to be REALLY slow loading, probably cause it's even HEAVIER! I can't get SDL_ttf on it's own, it will complain about SDL.dll cause I never loaded it with the loader.


Ouch... that is a problem.

trevorparscal wrote:
Maybe I should write a SDL_ttf style library like TrueType for D, and it will have the simplified functionality of FreeType without the excessive overhead. For instance, the freetype DLL is 450k. If I made an SDL_ttf style library, only it was independent of SDL, i would only be using a portion of that code, so it could be even smaller than SDL_ttf's DLL size of 340k. Faster loading, less ram wastage...


I'm not sure if that's a solution. But if you could do it, then that would be great, although it may turn out to be an even bigger job than porting freetype. I'll take a look at freetype and see how nasty it is. Maybe there's a solution.

trevorparscal wrote:
But I fear I would have to write the thing in C, which I hate now that I am spoiled with D.


No... you don't have to write it in C, but you do have to provide C export functions that give D access to it.

trevorparscal wrote:
A compiled C++ DLL is incompatible with D? I am unsure on that.. Maybe you could enlighten me there.


A purely C++ based DLL is not accessible from D. But like I said above, you can write the library in C++ and provide C export functions that interface with the C++ code behind the scenes. D can access the exported C functions.

-JJR
Back to top
View user's profile Send private message
h3r3tic



Joined: 30 Mar 2004
Posts: 261
Location: Torun, Poland

PostPosted: Wed May 25, 2005 9:42 am    Post subject: Reply with quote

Dunno if it'll be of much help but here's what I do to port C libs to be Derelict-compatible:

1. On a remote linux box, I run h2d on the .h files
2. I connect thru WinSCP and dload the .d files to my machine

Now Locally (WinXP):
3. I use a few regexps in gvim to delete stuff that I don't need from the .d files.
4. In jEdit I run a custom macro that converts function definitions to function pointer definitions and their declarations
5. Optionally goto 3
6. I run a python script that scans these function pointers and generates loading code for them
7. I grab common Derelict loading code that uses DerelictUtil and with a few cut-n-paste's and hand-edits I make it all Derelict compatible.

Unless you get zillions of macros or .h files, this technique should work just fine Razz
Back to top
View user's profile Send private message MSN Messenger
JJR



Joined: 22 Feb 2004
Posts: 1104

PostPosted: Wed May 25, 2005 9:54 am    Post subject: Reply with quote

Excellent! Thanks for sharing, Tom.

Another option for those that don't have a linux system is to use a pc emulator on XP, like virtual pc or vmware workstation, and to install linux on that.

A faster option would be to use cooperative linux: http://www.colinux.org/

Or we could just port h2d to windows and be done with it. Wink

-JJR
Back to top
View user's profile Send private message
h3r3tic



Joined: 30 Mar 2004
Posts: 261
Location: Torun, Poland

PostPosted: Wed May 25, 2005 9:59 am    Post subject: Reply with quote

JJR wrote:
A faster option would be to use cooperative linux: http://www.colinux.org/


Yup, colinux is very nice. Can I get OpenGL rendering in it somehow ? I'd change my VPC for it. I remember I connected to it using VNC but it didn't support OpenGL and generally was quite laggy. Maybe via Cygwin's X server ? Have you got any exp with it ?

Quote:
Or we could just port h2d to windows and be done with it. Wink


Or port it to Python and also be done with it... Razz
Back to top
View user's profile Send private message MSN Messenger
JJR



Joined: 22 Feb 2004
Posts: 1104

PostPosted: Wed May 25, 2005 10:08 am    Post subject: Reply with quote

h3r3tic wrote:
Yup, colinux is very nice. Can I get OpenGL rendering in it somehow ? I'd change my VPC for it. I remember I connected to it using VNC but it didn't support OpenGL and generally was quite laggy. Maybe via Cygwin's X server ? Have you got any exp with it ?


Nope, not much experience. Last time I tried it with a Gentoo install, I couldn't get the virtual network interface running. I was wondering the same thing about OpenGL, though. I don't know if that's possible, but I would be very interested to know if it were. That would allow for some excellent cross-platform development possibilities.

h3r3tic wrote:
Quote:
Or we could just port h2d to windows and be done with it. Wink


Or port it to Python and also be done with it... Razz


That would work. I haven't looked at the source, but it's probably not too complicated since it doesn't take the whole translator approach. I'm considering working on another little converter anyway.

-JJR
Back to top
View user's profile Send private message
h3r3tic



Joined: 30 Mar 2004
Posts: 261
Location: Torun, Poland

PostPosted: Wed May 25, 2005 10:16 am    Post subject: Reply with quote

JJR wrote:
h3r3tic wrote:
Yup, colinux is very nice. Can I get OpenGL rendering in it somehow ? I'd change my VPC for it. I remember I connected to it using VNC but it didn't support OpenGL and generally was quite laggy. Maybe via Cygwin's X server ? Have you got any exp with it ?


Nope, not much experience. Last time I tried it with a Gentoo install, I couldn't get the virtual network interface running. I was wondering the same thing about OpenGL, though. I don't know if that's possible, but I would be very interested to know if it were. That would allow for some excellent cross-platform development possibilities.


I don't remember which distro I had, but the network ran fine. I'm actually having more trouble with VPC loopback network connection /* that keeps screwing up my smbfs mounts */ than I had with coLinux. I'm gonna check it out again later /* Running out of free time recently */

Quote:
h3r3tic wrote:
Quote:
Or we could just port h2d to windows and be done with it. Wink



Or port it to Python and also be done with it... Razz


That would work. I haven't looked at the source, but it's probably not too complicated since it doesn't take the whole translator approach. I'm considering working on another little converter anyway.


Cool, having a more complete tool would be great. One that uses the C preprocessor on the .h files might work.
Oh, and don't forget to make the tool automatic, like:
./h2d2 FreeType Derelict <== downloads the FreeType SDK, converts its headers to D and makes them Derelict compatible Cool
Back to top
View user's profile Send private message MSN Messenger
JJR



Joined: 22 Feb 2004
Posts: 1104

PostPosted: Wed May 25, 2005 10:24 am    Post subject: Reply with quote

h3r3tic wrote:
Cool, having a more complete tool would be great. One that uses the C preprocessor on the .h files might work.
Oh, and don't forget to make the tool automatic, like:
./h2d2 FreeType Derelict <== downloads the FreeType SDK, converts its headers to D and makes them Derelict compatible Cool


<Ahem> I said "little" project... not "big" ... Smile

I don't know if I could afford investing that much time (trying to work on multiple projects right now), but I agree such a comprehensive tool would be very useful. Accomplishing such a task might even make one instantly famous within the D community. Smile

-JJR
Back to top
View user's profile Send private message
h3r3tic



Joined: 30 Mar 2004
Posts: 261
Location: Torun, Poland

PostPosted: Wed May 25, 2005 12:46 pm    Post subject: Reply with quote

<OT>
// About the linux/windows cross platform development:

I've installed Xming (http://freedesktop.org/wiki/Xming) and tunneling X11 throught putty to my FC2 running on VPC, I'm getting around 40fps in my GUI demo. Although it gets as high as 700 fps when running natively on my WinXP, I don't think I need any more to develop cross-platform applications that use OpenGL. Probably coLinux can give more fps, I may check it out later, but that's not the point. If I develop on the Win32 box and get a steady framerate then all I have to do on the linux box is... to ensure if it runs at all. This is just enough for most needs, and occasionally I might check my apps on a "full-blown" linux box to see if the performance is the same as on Win32.

</OT>
Back to top
View user's profile Send private message MSN Messenger
JJR



Joined: 22 Feb 2004
Posts: 1104

PostPosted: Wed May 25, 2005 1:42 pm    Post subject: Reply with quote

Good to know! Thanks, Tom!

So I guess the "remote" X server idea can work well. If this would work on coop linux, it would be just a nice extra, I guess, but not critical. I may give it a try with VPC sometime. I also have VMWare workstation to play with.

-JJR
Back to top
View user's profile Send private message
JJR



Joined: 22 Feb 2004
Posts: 1104

PostPosted: Wed May 25, 2005 3:19 pm    Post subject: Reply with quote

h3r3tic wrote:
I don't remember which distro I had, but the network ran fine. I'm actually having more trouble with VPC loopback network connection /* that keeps screwing up my smbfs mounts */ than I had with coLinux. I'm gonna check it out again later /* Running out of free time recently */


Network ran fine? What mode did you use: coLinux Virtual Ethernet Driver (TAP-Win32) or coLinux Bridged Ethernet (WinPcap)? Neither worked for me. But maybe it was trouble using Gentoo.

I ask because the WinPcap library is a separate download and installation requirement.

I'll be trying again shortly. Apparently you can get native win32 opengl support enabled somehow.

-JJR
Back to top
View user's profile Send private message
h3r3tic



Joined: 30 Mar 2004
Posts: 261
Location: Torun, Poland

PostPosted: Wed May 25, 2005 3:22 pm    Post subject: Reply with quote

JJR wrote:

Network ran fine? What mode did you use: coLinux Virtual Ethernet Driver (TAP-Win32) or coLinux Bridged Ethernet (WinPcap)? Neither worked for me. But maybe it was trouble using Gentoo.


I used TAP-Win32. Had all my drives mounted through samba, etc. Network worked...

Quote:
I'll be trying again shortly. Apparently you can get native win32 opengl support enabled somehow.


I'm already downloading the package 'gentoo-i586-ext3-2g-deluxe.bz2' Twisted Evil
Back to top
View user's profile Send private message MSN Messenger
trevorparscal



Joined: 25 May 2005
Posts: 73
Location: Bay Area, CA (USA)

PostPosted: Wed May 25, 2005 3:59 pm    Post subject: Reply with quote

Maybe if one of you guys could do as much automatic stuff to the freetype headers as possible, and give me the results, I could debug and finish it up.

FreeType unfourtunately has a bunch of macros, but I am unsure if ANY are nesecary for using the library, and the ones I converted so far seemed to be able to be made into functions easy enough..

Also, they use macros to define the kind of export to use, like DLL or static I think, so the beinging of each function has

EXPORT( type ) funcname(params);

The EXPORT can just be stripped. Also there are some definitions that use a macro that converts 4 characters into a 32bit integer. I just used the same technique as their macro in an outside program, and came up with the numbers myself, which would be "hard coding", but to be honest I can't understand why they did this in the first place...

here are those defs..

/* Hardcoded 32bit Integers */
alias ulong FT_Encoding_;
const FT_Encoding_ FT_ENCODING_NONE = 0;
const FT_Encoding_ FT_ENCODING_MS_SYMBOL = 1937337698;
const FT_Encoding_ FT_ENCODING_UNICODE = 1970170211;
const FT_Encoding_ FT_ENCODING_SJIS = 1936353651;
const FT_Encoding_ FT_ENCODING_GB2312 = 1734484000;
const FT_Encoding_ FT_ENCODING_BIG5 = 1651074869;
const FT_Encoding_ FT_ENCODING_WANSUNG = 2002873971;
const FT_Encoding_ FT_ENCODING_JOHAB = 1785686113;
const FT_Encoding_ FT_ENCODING_ADOBE_STANDARD = 1094995778;
const FT_Encoding_ FT_ENCODING_ADOBE_EXPERT = 1094992453;
const FT_Encoding_ FT_ENCODING_ADOBE_CUSTOM = 1094992451;
const FT_Encoding_ FT_ENCODING_ADOBE_LATIN_1 = 1818326065;
const FT_Encoding_ FT_ENCODING_OLD_LATIN_2 = 1818326066;
const FT_Encoding_ FT_ENCODING_APPLE_ROMAN = 1634889070;

and I think I have all the functions, just not ALL the prototypes. here are the functions...

/* Functions */

/* Fucntions */
extern (C)
{
// Function Types
typedef FT_Error function(FT_Library *alibrary) pfFT_Init_FreeType;
typedef void function(FT_Library library, FT_Int *amajor, FT_Int *aminor, FT_Int *apatch ) pfFT_Library_Version;
typedef FT_Error function(FT_Library library) pfFT_Done_FreeType;
typedef FT_Error function(FT_Library library, char* filepathname, FT_Long face_index, FT_Face *aface) pfFT_New_Face;
typedef FT_Error function(FT_Library library, FT_Byte* file_base, FT_Long file_size, FT_Long face_index, FT_Face *aface) pfFT_New_Memory_Face;
typedef FT_Error function(FT_Library library, FT_Open_Args* args, FT_Long face_index, FT_Face *aface ) pfFT_Open_Face;
typedef FT_Error function(FT_Face face, char* filepathname) pfFT_Attach_File;
typedef FT_Error function(FT_Face face, FT_Open_Args* parameters) pfFT_Attach_Stream;
typedef FT_Error function(FT_Face face) pfFT_Done_Face;
typedef FT_Error function(FT_Face face, FT_F26Dot6 char_width, FT_F26Dot6 char_height, FT_UInt horz_resolution, FT_UInt vert_resolution) pfFT_Set_Char_Size;
typedef FT_Error function(FT_Face face, FT_UInt pixel_width, FT_UInt pixel_height) pfFT_Set_Pixel_Sizes;
typedef FT_Error function(FT_Face face, FT_UInt glyph_index, FT_Int32 load_flags) pfFT_Load_Glyph;
typedef FT_Error function(FT_Face face, FT_ULong char_code, FT_Int32 load_flags) pfFT_Load_Char;
typedef void function(FT_Face face, FT_Matrix* matrix, FT_Vector* delta) pfFT_Set_Transform;
typedef FT_Error function(FT_GlyphSlot slot, FT_Render_Mode render_mode) pfFT_Render_Glyph;
typedef FT_Error function(FT_Face face, FT_UInt left_glyph, FT_UInt right_glyph, FT_UInt kern_mode, FT_Vector *akerning) pfFT_Get_Kerning;
typedef FT_Error function(FT_Face face, FT_UInt glyph_index, FT_Pointer buffer, FT_UInt buffer_max) pfFT_Get_Glyph_Name;
typedef const char* function(FT_Face face) pfFT_Get_Postscript_Name;
typedef FT_Error function(FT_Face face, FT_Encoding encoding) pfFT_Select_Charmap;
typedef FT_Error function(FT_Face face, FT_CharMap charmap) pfFT_Set_Charmap;
typedef FT_UInt function(FT_Face face, FT_ULong charcode) pfFT_Get_Char_Index;
typedef FT_ULong function(FT_Face face, FT_UInt *agindex) pfFT_Get_First_Char;
typedef FT_ULong function(FT_Face face, FT_ULong char_code, FT_UInt *agindex) pfFT_Get_Next_Char;
typedef FT_UInt function(FT_Face face, FT_String* glyph_name) pfFT_Get_Name_Index;
typedef FT_Long function(FT_Long a, FT_Long b, FT_Long c) pfFT_MulDiv;
typedef FT_Long function(FT_Long a, FT_Long b) pfFT_MulFix;
typedef FT_Long function(FT_Long a, FT_Long b) pfFT_DivFix;
typedef FT_Fixed function(FT_Fixed a) pfFT_RoundFix;
typedef FT_Fixed function(FT_Fixed a) pfFT_CeilFix;
typedef FT_Fixed function(FT_Fixed a) pfFT_FloorFix;
typedef void function(FT_Vector* vec, FT_Matrix* matrix) pfFT_Vector_Transform;

// Function Pointers
pfFT_Init_FreeType FT_Init_FreeType;
pfFT_Library_Version FT_Library_Version;
pfFT_Done_FreeType FT_Done_FreeType;
pfFT_New_Face FT_New_Face;
pfFT_New_Memory_Face FT_New_Memory_Face;
pfFT_Open_Face FT_Open_Face;
pfFT_Attach_File FT_Attach_File;
pfFT_Attach_Stream FT_Attach_Stream;
pfFT_Done_Face FT_Done_Face;
pfFT_Set_Char_Size FT_Set_Char_Size;
pfFT_Set_Pixel_Sizes FT_Set_Pixel_Sizes;
pfFT_Load_Glyph FT_Load_Glyph;
pfFT_Load_Char FT_Load_Char;
pfFT_Set_Transform FT_Set_Transform;
pfFT_Render_Glyph FT_Render_Glyph;
pfFT_Get_Kerning FT_Get_Kerning;
pfFT_Get_Glyph_Name FT_Get_Glyph_Name;
pfFT_Get_Postscript_Name FT_Get_Postscript_Name;
pfFT_Select_Charmap FT_Select_Charmap;
pfFT_Set_Charmap FT_Set_Charmap;
pfFT_Get_Char_Index FT_Get_Char_Index;
pfFT_Get_First_Char FT_Get_First_Char;
pfFT_Get_Next_Char FT_Get_Next_Char;
pfFT_Get_Name_Index FT_Get_Name_Index;
pfFT_MulDiv FT_MulDiv;
pfFT_MulFix FT_MulFix;
pfFT_DivFix FT_DivFix;
pfFT_RoundFix FT_RoundFix;
pfFT_CeilFix FT_CeilFix;
pfFT_FloorFix FT_FloorFix;
pfFT_Vector_Transform FT_Vector_Transform;
}

/* Loader */
private SharedLib libFreeType;

private void* getProc(char[] procName)
{
return _GetProc(libFreeType, procName);
}

private void load()
{
FT_Init_FreeType = cast(pfFT_Init_FreeType)getProc("FT_Init_FreeType");
FT_Library_Version = cast(pfFT_Library_Version)getProc("FT_Library_Version");
FT_Done_FreeType = cast(pfFT_Done_FreeType)getProc("FT_Done_FreeType");
FT_New_Face = cast(pfFT_New_Face)getProc("FT_New_Face");
FT_New_Memory_Face = cast(pfFT_New_Memory_Face)getProc("FT_New_Memory_Face");
FT_Open_Face = cast(pfFT_Open_Face)getProc("FT_Open_Face");
FT_Attach_File = cast(pfFT_Attach_File)getProc("FT_Attach_File");
FT_Attach_Stream = cast(pfFT_Attach_Stream)getProc("FT_Attach_Stream");
FT_Done_Face = cast(pfFT_Done_Face)getProc("FT_Done_Face");
FT_Set_Char_Size = cast(pfFT_Set_Char_Size)getProc("FT_Set_Char_Size");
FT_Set_Pixel_Sizes = cast(pfFT_Set_Pixel_Sizes)getProc("FT_Set_Pixel_Sizes");
FT_Load_Glyph = cast(pfFT_Load_Glyph)getProc("FT_Load_Glyph");
FT_Load_Char = cast(pfFT_Load_Char)getProc("FT_Load_Char");
FT_Set_Transform = cast(pfFT_Set_Transform)getProc("FT_Set_Transform");
FT_Render_Glyph = cast(pfFT_Render_Glyph)getProc("FT_Render_Glyph");
FT_Get_Kerning = cast(pfFT_Get_Kerning)getProc("FT_Get_Kerning");
FT_Get_Glyph_Name = cast(pfFT_Get_Glyph_Name)getProc("FT_Get_Glyph_Name");
FT_Get_Postscript_Name = cast(pfFT_Get_Postscript_Name)getProc("FT_Get_Postscript_Name");
FT_Select_Charmap = cast(pfFT_Select_Charmap)getProc("FT_Select_Charmap");
FT_Set_Charmap = cast(pfFT_Set_Charmap)getProc("FT_Set_Charmap");
FT_Get_Char_Index = cast(pfFT_Get_Char_Index)getProc("FT_Get_Char_Index");
FT_Get_First_Char = cast(pfFT_Get_First_Char)getProc("FT_Get_First_Char");
FT_Get_Next_Char = cast(pfFT_Get_Next_Char)getProc("FT_Get_Next_Char");
FT_Get_Name_Index = cast(pfFT_Get_Name_Index)getProc("FT_Get_Name_Index");
FT_MulDiv = cast(pfFT_MulDiv)getProc("FT_MulDiv");
FT_MulFix = cast(pfFT_MulFix)getProc("FT_MulFix");
FT_DivFix = cast(pfFT_DivFix)getProc("FT_DivFix");
FT_RoundFix = cast(pfFT_RoundFix)getProc("FT_RoundFix");
FT_CeilFix = cast(pfFT_CeilFix)getProc("FT_CeilFix");
FT_FloorFix = cast(pfFT_FloorFix)getProc("FT_FloorFix");
FT_Vector_Transform = cast(pfFT_Vector_Transform)getProc("FT_Vector_Transform");
}


I think that will save time having that done, even if we throw all my other code out.

Thanks,
Trevor Parscal
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
Display posts from previous:   
Post new topic   Reply to topic     Forum Index -> Derelict All times are GMT - 6 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group