|
|
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<EFBFBD>termin<EFBFBD> <EFBFBD> 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<EFBFBD>me de configuration automatique |
|
|
|
|
|
freetype2/ |
|
|
Makefile |
|
|
config/ |
|
|
ansi/ |
|
|
config.mk |
|
|
|
|
|
make setup => autodetection du syst<EFBFBD>me + copie de fichier include ??? |
|
|
|
|
|
make
|
|
|
|