2006-03-31 14:28:09 +02:00
|
|
|
/* harfbuzz-buffer.h: Buffer of glyphs for substitution/positioning
|
|
|
|
*
|
|
|
|
* Copyrigh 2004 Red Hat Software
|
|
|
|
*
|
|
|
|
* Portions Copyright 1996-2000 by
|
|
|
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
|
|
|
*
|
|
|
|
* This file is part of the FreeType project, and may only be used
|
|
|
|
* modified and distributed under the terms of the FreeType project
|
|
|
|
* license, LICENSE.TXT. By continuing to use, modify, or distribute
|
|
|
|
* this file you indicate that you have read the license and
|
|
|
|
* understand and accept it fully.
|
|
|
|
*/
|
|
|
|
#ifndef HARFBUZZ_BUFFER_H
|
|
|
|
#define HARFBUZZ_BUFFER_H
|
|
|
|
|
|
|
|
#include <ft2build.h>
|
|
|
|
#include FT_FREETYPE_H
|
|
|
|
|
|
|
|
FT_BEGIN_HEADER
|
|
|
|
|
|
|
|
#define HB_GLYPH_PROPERTIES_UNKNOWN 0xFFFF
|
|
|
|
|
|
|
|
typedef struct HB_GlyphItemRec_ {
|
|
|
|
FT_UInt gindex;
|
|
|
|
FT_UInt properties;
|
|
|
|
FT_UInt cluster;
|
|
|
|
FT_UShort component;
|
|
|
|
FT_UShort ligID;
|
|
|
|
FT_UShort gproperties;
|
|
|
|
} HB_GlyphItemRec, *HB_GlyphItem;
|
|
|
|
|
|
|
|
typedef struct HB_PositionRec_ {
|
|
|
|
FT_Pos x_pos;
|
|
|
|
FT_Pos y_pos;
|
|
|
|
FT_Pos x_advance;
|
|
|
|
FT_Pos y_advance;
|
|
|
|
FT_UShort back; /* number of glyphs to go back
|
|
|
|
for drawing current glyph */
|
|
|
|
FT_Bool new_advance; /* if set, the advance width values are
|
|
|
|
absolute, i.e., they won't be
|
|
|
|
added to the original glyph's value
|
|
|
|
but rather replace them. */
|
|
|
|
FT_Short cursive_chain; /* character to which this connects,
|
|
|
|
may be positive or negative; used
|
|
|
|
only internally */
|
|
|
|
} HB_PositionRec, *HB_Position;
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct HB_BufferRec_{
|
|
|
|
FT_ULong allocated;
|
|
|
|
|
|
|
|
FT_ULong in_length;
|
|
|
|
FT_ULong out_length;
|
|
|
|
FT_ULong in_pos;
|
|
|
|
FT_ULong out_pos;
|
|
|
|
|
2007-10-11 02:07:58 +02:00
|
|
|
FT_Bool inplace;
|
2006-03-31 14:28:09 +02:00
|
|
|
HB_GlyphItem in_string;
|
|
|
|
HB_GlyphItem out_string;
|
2007-10-11 02:07:58 +02:00
|
|
|
HB_GlyphItem alt_string;
|
2006-03-31 14:28:09 +02:00
|
|
|
HB_Position positions;
|
|
|
|
FT_UShort max_ligID;
|
|
|
|
} HB_BufferRec, *HB_Buffer;
|
|
|
|
|
2007-10-11 02:07:58 +02:00
|
|
|
HB_Error
|
2007-10-11 08:52:07 +02:00
|
|
|
hb_buffer_new( HB_Buffer *buffer );
|
2006-03-31 14:28:09 +02:00
|
|
|
|
2007-10-11 02:07:58 +02:00
|
|
|
void
|
2006-03-31 14:28:09 +02:00
|
|
|
hb_buffer_swap( HB_Buffer buffer );
|
|
|
|
|
2007-10-11 02:07:58 +02:00
|
|
|
void
|
2006-03-31 14:28:09 +02:00
|
|
|
hb_buffer_free( HB_Buffer buffer );
|
|
|
|
|
2007-10-11 02:07:58 +02:00
|
|
|
void
|
2006-03-31 14:28:09 +02:00
|
|
|
hb_buffer_clear( HB_Buffer buffer );
|
|
|
|
|
2007-10-11 02:07:58 +02:00
|
|
|
void
|
|
|
|
hb_buffer_clear_output( HB_Buffer buffer );
|
|
|
|
|
|
|
|
HB_Error
|
2006-03-31 14:28:09 +02:00
|
|
|
hb_buffer_add_glyph( HB_Buffer buffer,
|
|
|
|
FT_UInt glyph_index,
|
|
|
|
FT_UInt properties,
|
|
|
|
FT_UInt cluster );
|
|
|
|
|
2007-10-11 02:07:58 +02:00
|
|
|
HB_Error
|
2006-03-31 14:28:09 +02:00
|
|
|
hb_buffer_add_output_glyphs( HB_Buffer buffer,
|
|
|
|
FT_UShort num_in,
|
|
|
|
FT_UShort num_out,
|
|
|
|
FT_UShort *glyph_data,
|
|
|
|
FT_UShort component,
|
|
|
|
FT_UShort ligID );
|
|
|
|
|
2007-10-11 02:07:58 +02:00
|
|
|
HB_Error
|
2006-03-31 14:28:09 +02:00
|
|
|
hb_buffer_add_output_glyph ( HB_Buffer buffer,
|
|
|
|
FT_UInt glyph_index,
|
|
|
|
FT_UShort component,
|
|
|
|
FT_UShort ligID );
|
|
|
|
|
2007-10-11 02:07:58 +02:00
|
|
|
HB_Error
|
2006-03-31 14:28:09 +02:00
|
|
|
hb_buffer_copy_output_glyph ( HB_Buffer buffer );
|
|
|
|
|
2007-10-11 02:07:58 +02:00
|
|
|
HB_Error
|
|
|
|
hb_buffer_replace_output_glyph ( HB_Buffer buffer,
|
|
|
|
FT_UInt glyph_index,
|
|
|
|
FT_Bool inplace );
|
|
|
|
|
2006-03-31 14:28:09 +02:00
|
|
|
FT_UShort
|
|
|
|
hb_buffer_allocate_ligid( HB_Buffer buffer );
|
|
|
|
|
|
|
|
FT_END_HEADER
|
|
|
|
|
|
|
|
#endif /* HARFBUZZ_BUFFER_H */
|