diff options
Diffstat (limited to 'nx-X11/extras/freetype2/src/otlayout/otlayout.h')
-rw-r--r-- | nx-X11/extras/freetype2/src/otlayout/otlayout.h | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/nx-X11/extras/freetype2/src/otlayout/otlayout.h b/nx-X11/extras/freetype2/src/otlayout/otlayout.h new file mode 100644 index 000000000..2cd67f568 --- /dev/null +++ b/nx-X11/extras/freetype2/src/otlayout/otlayout.h @@ -0,0 +1,205 @@ +#ifndef __OT_LAYOUT_H__ +#define __OT_LAYOUT_H__ + + +#include "otlconf.h" + +OTL_BEGIN_HEADER + + /************************************************************************/ + /************************************************************************/ + /***** *****/ + /***** BASE DATA TYPES *****/ + /***** *****/ + /************************************************************************/ + /************************************************************************/ + + typedef unsigned char OTL_Byte; + typedef const OTL_Byte* OTL_Bytes; + + typedef int OTL_Error; + + typedef void* OTL_Pointer; + + typedef int OTL_Int; + typedef unsigned int OTL_UInt; + + typedef long OTL_Long; + typedef unsigned long OTL_ULong; + + typedef short OTL_Int16; + typedef unsigned short OTL_UInt16; + + +#if OTL_SIZEOF_INT == 4 + + typedef int OTL_Int32; + typedef unsigned int OTL_UInt32; + +#elif OTL_SIZEOF_LONG == 4 + + typedef long OTL_Int32; + typedef unsigned long OTL_UInt32; + +#else +# error "no 32-bits type found" +#endif + + typedef OTL_UInt32 OTL_Tag; + + /************************************************************************/ + /************************************************************************/ + /***** *****/ + /***** ERROR CODES *****/ + /***** *****/ + /************************************************************************/ + /************************************************************************/ + + typedef enum + { + OTL_Err_Ok = 0, + OTL_Err_InvalidArgument, + OTL_Err_InvalidFormat, + OTL_Err_InvalidOffset, + + OTL_Err_Max + + } OTL_Error; + + + /************************************************************************/ + /************************************************************************/ + /***** *****/ + /***** MEMORY MANAGEMENT *****/ + /***** *****/ + /************************************************************************/ + /************************************************************************/ + + typedef OTL_Pointer (*OTL_AllocFunc)( OTL_ULong size, + OTL_Pointer data ); + + typedef OTL_Pointer (*OTL_ReallocFunc)( OTL_Pointer block, + OTL_ULong size, + OTL_Pointer data ); + + typedef void (*OTL_FreeFunc)( OTL_Pointer block, + OTL_Pointer data ); + + typedef struct OTL_MemoryRec_ + { + OTL_Pointer mem_data; + OTL_AllocFunc mem_alloc; + OTL_ReallocFunc mem_realloc; + OTL_FreeFunc mem_free; + + } OTL_MemoryRec, *OTL_Memory; + + /************************************************************************/ + /************************************************************************/ + /***** *****/ + /***** ENUMERATIONS *****/ + /***** *****/ + /************************************************************************/ + /************************************************************************/ + +/* re-define OTL_MAKE_TAG to something different if you're not */ +/* using an ASCII-based character set (Vaxes anyone ?) */ +#ifndef OTL_MAKE_TAG +#define OTL_MAKE_TAG(c1,c2,c3,c4) \ + ( ( (OTL_UInt32)(c1) << 24 ) | \ + (OTL_UInt32)(c2) << 16 ) | \ + (OTL_UInt32)(c3) << 8 ) | \ + (OTL_UInt32)(c4) ) +#endif + + typedef enum OTL_ScriptTag_ + { + OTL_SCRIPT_NONE = 0, + +#define OTL_SCRIPT_TAG(c1,c2,c3,c4,s,n) OTL_SCRIPT_TAG_ ## n = OTL_MAKE_TAG(c1,c2,c3,c4), +#include "otltags.h" + + OTL_SCRIPT_MAX + + } OTL_ScriptTag; + + + typedef enum OTL_LangTag_ + { + OTL_LANG_DEFAULT = 0, + +#define OTL_LANG_TAG(c1,c2,c3,c4,s,n) OTL_LANG_TAG_ ## n = OTL_MAKE_TAG(c1,c2,c3,c4), +#include "otltags.h" + + OTL_LANG_MAX + + } OTL_LangTag; + + + /************************************************************************/ + /************************************************************************/ + /***** *****/ + /***** MEMORY READS *****/ + /***** *****/ + /************************************************************************/ + /************************************************************************/ + +#define OTL_PEEK_USHORT(p) ( ((OTL_UInt)((p)[0]) << 8) | \ + ((OTL_UInt)((p)[1]) ) ) + +#define OTL_PEEK_ULONG(p) ( ((OTL_UInt32)((p)[0]) << 24) | \ + ((OTL_UInt32)((p)[1]) << 16) | \ + ((OTL_UInt32)((p)[2]) << 8) | \ + ((OTL_UInt32)((p)[3]) ) ) + +#define OTL_PEEK_SHORT(p) ((OTL_Int16)OTL_PEEK_USHORT(p)) + +#define OTL_PEEK_LONG(p) ((OTL_Int32)OTL_PEEK_ULONG(p)) + +#define OTL_NEXT_USHORT(p) ( (p) += 2, OTL_PEEK_USHORT((p)-2) ) +#define OTL_NEXT_ULONG(p) ( (p) += 4, OTL_PEEK_ULONG((p)-4) ) + +#define OTL_NEXT_SHORT(p) ((OTL_Int16)OTL_NEXT_USHORT(p)) +#define OTL_NEXT_LONG(p) ((OTL_Int32)OTL_NEXT_ULONG(p)) + + /************************************************************************/ + /************************************************************************/ + /***** *****/ + /***** VALIDATION *****/ + /***** *****/ + /************************************************************************/ + /************************************************************************/ + + typedef struct OTL_ValidatorRec_* OTL_Validator; + + typedef struct OTL_ValidatorRec_ + { + OTL_Bytes limit; + OTL_Bytes base; + OTL_Error error; + OTL_jmp_buf jump_buffer; + + } OTL_ValidatorRec; + + typedef void (*OTL_ValidateFunc)( OTL_Bytes table, + OTL_Valid valid ); + + OTL_API( void ) + otl_validator_error( OTL_Validator validator, + OTL_Error error ); + +#define OTL_INVALID(e) otl_validator_error( valid, e ) + +#define OTL_INVALID_TOO_SHORT OTL_INVALID( OTL_Err_InvalidOffset ) +#define OTL_INVALID_DATA OTL_INVALID( OTL_Err_InvalidFormat ) + +#define OTL_CHECK(_count) OTL_BEGIN_STMNT \ + if ( p + (_count) > valid->limit ) \ + OTL_INVALID_TOO_SHORT; \ + OTL_END_STMNT + + /* */ + +OTL_END_HEADER + +#endif /* __OPENTYPE_LAYOUT_H__ */ |