* include/freetype/freetype.h: changing version to 2.1.0 to indicate

an unstable branch. Added the declarations of FT_Get_First_Char and
        FT_Get_Next_Char

        * src/base/ftobjs.c: implemented FT_Get_First_Char and FT_Get_Next_Char
This commit is contained in:
David Turner 2002-02-28 19:28:26 +00:00
parent 1c9a3d335f
commit 041889e763
3 changed files with 128 additions and 6 deletions

View File

@ -1,5 +1,11 @@
2002-02-28 David Turner <david@freetype.org>
* include/freetype/freetype.h: changing version to 2.1.0 to indicate
an unstable branch. Added the declarations of FT_Get_First_Char and
FT_Get_Next_Char
* src/base/ftobjs.c: implemented FT_Get_First_Char and FT_Get_Next_Char
* include/freetype/t1tables.h: re-naming structure types. This done
basically:

View File

@ -34,8 +34,8 @@
/* drivers. It starts at 2.0. */
/* */
#define FREETYPE_MAJOR 2
#define FREETYPE_MINOR 0
#define FREETYPE_PATCH 8
#define FREETYPE_MINOR 1
#define FREETYPE_PATCH 0
#include <ft2build.h>
@ -2392,6 +2392,89 @@ FT_BEGIN_HEADER
FT_ULong charcode );
/*************************************************************************/
/* */
/* <Function> */
/* FT_Get_First_Char */
/* */
/* <Description> */
/* This function is used to return the first character code in the */
/* current charmap of a given face. It will also return the */
/* corresponding glyph index. */
/* */
/* <Input> */
/* face :: A handle to the source face object. */
/* */
/* <Output> */
/* agindex :: glyph index of first character code. 0 if charmap */
/* is empty.. */
/* */
/* <Return> */
/* the charmap's first character code. */
/* */
/* <Note> */
/* you should use this function with @FT_Get_Next_Char to be able */
/* to parse all character codes available in a given charmap. */
/* the code should look like: */
/* */
/* { */
/* FT_ULong charcode; */
/* FT_UInt gindex; */
/* */
/* charcode = FT_Get_First_Char( face, &gindex ); */
/* while ( gindex != 0 ) */
/* { */
/* .. do something with (charcode,gindex) pair */
/* */
/* charcode = FT_Get_Next_Char( face, charcode, &gindex ); */
/* } */
/* } */
/* */
/* note that '*agindex' will be set to 0 if the charmap is empty. */
/* the result itself can be 0 in two cases: if the charmap is empty */
/* or when the value 0 is the first valid character code. */
/* */
FT_EXPORT( FT_ULong )
FT_Get_First_Char( FT_Face face,
FT_UInt *agindex );
/*************************************************************************/
/* */
/* <Function> */
/* FT_Get_Next_Char */
/* */
/* <Description> */
/* This function is used to return the next character code in the */
/* current charmap of a given face following the value 'char_code', */
/* as well as the corresponding glyph index */
/* */
/* <Input> */
/* face :: A handle to the source face object. */
/* char_code :: starting character code */
/* */
/* <Output> */
/* agindex :: glyph index of first character code. 0 if charmap */
/* is empty.. */
/* */
/* <Return> */
/* the charmap's next character code. */
/* */
/* <Note> */
/* you should use this function with @FT_Get_First_Char to be able */
/* to parse all character codes available in a given charmap. see */
/* the note for this function for a simple code example.. */
/* */
/* note that '*agindex' will be set to 0 when there are no more */
/* codes in the charmap.. */
/* */
FT_EXPORT( FT_ULong )
FT_Get_Next_Char( FT_Face face,
FT_ULong char_code,
FT_UInt *agindex );
/*************************************************************************/
/* */
/* <Function> */

View File

@ -1466,19 +1466,52 @@
/* documentation is in freetype.h */
FT_EXPORT_DEF( FT_ULong )
FT_Get_Next_Char( FT_Face face,
FT_ULong charcode )
FT_Get_First_Char( FT_Face face,
FT_UInt *agindex )
{
FT_ULong result;
FT_ULong result = 0;
FT_UInt gindex = 0;
if ( face && face->charmap )
{
gindex = FT_Get_Char_Index( face, 0 );
if ( gindex == 0 )
result = FT_Get_Next_Char( face, 0, &gindex );
}
if ( agindex )
*agindex = gindex;
return result;
}
/* documentation is in freetype.h */
FT_EXPORT_DEF( FT_ULong )
FT_Get_Next_Char( FT_Face face,
FT_ULong charcode,
FT_UInt *agindex )
{
FT_ULong result = 0;
FT_UInt gindex = 0;
FT_Driver driver;
result = 0;
if ( face && face->charmap )
{
driver = face->driver;
result = driver->clazz->get_next_char( face->charmap, charcode );
if ( result != 0 )
{
gindex = driver->clazz->get_char_index( face->charmap, result );
if ( gindex == 0 )
result = 0;
}
}
if ( agindex )
*agindex = gindex;
return result;
}