blob: fca63380af48185d1ee163831a1ab81534723ebd [file] [log] [blame]
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