#ifndef __OPENTYPE_FTGLUE_H__
#define __OPENTYPE_FTGLUE_H__
+#include "fcint.h"
+
#include <ft2build.h>
#include FT_FREETYPE_H
FT_BEGIN_HEADER
-/* utility macros */
-#define TT_Err_Ok FT_Err_Ok
-#define TT_Err_Invalid_Argument FT_Err_Invalid_Argument
-#define TT_Err_Invalid_Face_Handle FT_Err_Invalid_Face_Handle
-#define TT_Err_Table_Missing FT_Err_Table_Missing
-
#define SET_ERR(c) ( (error = (c)) != 0 )
#ifndef FTGLUE_API
-#define FTGLUE_API(x) extern x
+#define FTGLUE_API(x) extern FcPrivate x
#endif
#ifndef FTGLUE_APIDEF
#define ACCESS_Frame(size) SET_ERR( ftglue_stream_frame_enter( stream, size ) )
#define FORGET_Frame() ftglue_stream_frame_exit( stream )
-#define GET_Byte() ftglue_stream_get_byte( stream )
-#define GET_Short() ftglue_stream_get_short( stream )
-#define GET_Long() ftglue_stream_get_long( stream )
+#define GET_Byte() (*stream->cursor++)
+#define GET_Short() (stream->cursor += 2, (FT_Short)( \
+ (*(((FT_Byte*)stream->cursor)-2) << 8) | \
+ *(((FT_Byte*)stream->cursor)-1) \
+ ))
+#define GET_Long() (stream->cursor += 4, (FT_Long)( \
+ (*(((FT_Byte*)stream->cursor)-4) << 24) | \
+ (*(((FT_Byte*)stream->cursor)-3) << 16) | \
+ (*(((FT_Byte*)stream->cursor)-2) << 8) | \
+ *(((FT_Byte*)stream->cursor)-1) \
+ ))
#define GET_Char() ((FT_Char)GET_Byte())
#define GET_UShort() ((FT_UShort)GET_Short())
FTGLUE_API( void )
ftglue_stream_frame_exit( FT_Stream stream );
-FTGLUE_API( FT_Byte )
-ftglue_stream_get_byte( FT_Stream stream );
-
-FTGLUE_API( FT_Short )
-ftglue_stream_get_short( FT_Stream stream );
-
-FTGLUE_API( FT_Long )
-ftglue_stream_get_long( FT_Stream stream );
-
FTGLUE_API( FT_Error )
ftglue_face_goto_table( FT_Face face,
FT_ULong tag,
FT_Stream stream );
-/* memory macros used by the OpenType parser */
-#define ALLOC(_ptr,_size) \
- ( (_ptr) = ftglue_alloc( memory, _size, &error ), error != 0 )
-
-#define REALLOC(_ptr,_oldsz,_newsz) \
- ( (_ptr) = ftglue_realloc( memory, (_ptr), (_oldsz), (_newsz), &error ), error != 0 )
-
-#define FREE(_ptr) \
- do { \
- if ( (_ptr) ) \
- { \
- ftglue_free( memory, _ptr ); \
- _ptr = NULL; \
- } \
- } while (0)
-
-#define ALLOC_ARRAY(_ptr,_count,_type) \
- ALLOC(_ptr,(_count)*sizeof(_type))
-
-#define REALLOC_ARRAY(_ptr,_oldcnt,_newcnt,_type) \
- REALLOC(_ptr,(_oldcnt)*sizeof(_type),(_newcnt)*sizeof(_type))
-
-#define MEM_Copy(dest,source,count) memcpy( (char*)(dest), (const char*)(source), (size_t)(count) )
-
-
-FTGLUE_API( FT_Pointer )
-ftglue_alloc( FT_Memory memory,
- FT_ULong size,
- FT_Error *perror_ );
-
-FTGLUE_API( FT_Pointer )
-ftglue_realloc( FT_Memory memory,
- FT_Pointer block,
- FT_ULong old_size,
- FT_ULong new_size,
- FT_Error *perror_ );
-
-FTGLUE_API( void )
-ftglue_free( FT_Memory memory,
- FT_Pointer block );
-
-/* */
-
FT_END_HEADER
#endif /* __OPENTYPE_FTGLUE_H__ */