| Un apercu du layout des fichiers sources de FreeType 2: |
| |
| docs/ - documentation |
| html/ - documentation au format html |
| |
| txt/ - documentation au format texte |
| |
| |
| include/ - les headers publiques de la librairie, ce sont ceux |
| qui sont installes avec le paquet freetype-devel.rpm |
| |
| config/ - le repertoire de configuration. |
| ansi/ |
| ft_conf.h - fichier de configuration |
| ftsys.c - fichier implementation bas-niveau |
| |
| unix/ |
| |
| os2/ |
| |
| dos/ |
| |
| amiga/ |
| |
| debug/ |
| |
| |
| src/ - sources de la librairie |
| base/ - couche de base (services generiques + API) |
| |
| truetype/ - pilote truetype |
| options/ - options du pilote truetype |
| extend/ - extensions du pilote truetype |
| |
| type1/ - pilote type 1 |
| options/ - options du pilote type 1 |
| extend/ - extensions du pilote type 1 |
| |
| type2/ - pilote type 2 |
| |
| speedo/ - pilote speedo |
| |
| shared/ - sources partagees par plusieurs pilotes |
| |
| |
| tests/ - programmes de test |
| data/ - donnees des tests = fichiers de police => copies dans bin |
| test1/ - source du test numero 1 |
| test2/ - source du test numero 2 |
| test3/ - ... |
| ... |
| |
| obj/ - emplacement des fichiers objets compiles + librairie ? |
| bin/ - emplacement des executables (demos+tests) |
| |
| demos/ - programmes de demonstration |
| graph/ - sous-systeme graphique des programmes de demo |
| |
| |
| contrib/ - contributions de toutes sortes.. |
| |
| |
| ============================================================================= |
| Quelques autres idees au hasard : |
| |
| - virer le controle des threads, on s'en tape magistralement |
| |
| - separer l'allocation memoire de l'acces disque (+flexible) |
| |
| - l'api de base doit permettre "d'ouvrir" un fichier de police se trouvant |
| deja en memoire.. |
| |
| - expliquer les differents types de dictionnaires : |
| |
| char_code -> glyph_index charmap (truetype) |
| char_code -> glyph_name encoding (type 1) |
| glyph_index -> glyph_name repertoire (...) |
| |
| - plusieurs "raster" possibles (le raster par defaut peut etre déterminé à la compilation, |
| sinon l'ajout se fait simplement en passant un pointeur d'interface..) |
| |
| |
| - l'api de base doit etre simplifiee. La plupart des developpeurs ne veulent |
| pas savoir ce qu'est une "size", un "glyph_slot", etc.., on conseille donc |
| d'en creer une par defaut, lors de l'appel de : |
| |
| ------------------- initialisation et lecture des polices ------------ |
| |
| FT_Init_FreeType( &library ); |
| |
| FT_Set_Memory_Manager( library, &mem_manager_rec ); |
| |
| FT_Set_IO_Manager( library, &io_manager_rec ); |
| |
| |
| FT_New_Face( library, file_pathname, face_index, &face ); |
| |
| FT_New_Memory_Face( library, first_byte, length, face_index, &face ); |
| |
| ou encore: |
| |
| FT_New_Face( library, &new_face_rec, &face ); |
| |
| avec new_face_rec :: |
| |
| face_index |
| |
| pathname |
| |
| memory_address |
| bytes_size |
| |
| |
| FT_Flush_Face( face ); // ferme le stream correspondant.. |
| |
| |
| ------------------------------------------ changement de taille ------ |
| |
| FT_Set_Size( face, &face_size_rec ); |
| |
| face_size_rec :: |
| char_height |
| char_width |
| horz_resolution |
| vert_resolution |
| |
| FT_Set_Pixel_Sizes( face, 64, 64 ); |
| |
| |
| ----------------------------------------- selection de la charmap ---- |
| |
| FT_Select_Charmap( face, ft_charmap_unicode ); |
| |
| FT_Select_Charmap_Index( face, index ); |
| |
| FT_List_Charmaps( face, buffer, max, first ); |
| |
| face->charmap => pointe vers la charmap actuelle.. |
| |
| |
| -------------------------------------- chargement des glyphes -------- |
| |
| FT_Load_Glyph( face, glyph_index ); |
| |
| FT_Load_Char( face, char_code ); |
| |
| FT_Transform_Glyph( face->glyph, &trans ); |
| |
| |
| ---------------------------------------------- rendu final ----------- |
| |
| FT_Get_Outline_Bitmap( library, face->glyph, &bit ); |
| |
| FT_Set_Raster( library, "default" ); |
| |
| FT_Set_Raster_Mode( library, major_mode, minor_mode ); |
| |
| |
| |
| |
| ======================================================================================= |
| |
| Système de configuration automatique |
| |
| freetype2/ |
| Makefile |
| config/ |
| ansi/ |
| config.mk |
| |
| make setup => autodetection du système + copie de fichier include ??? |
| |
| make |