11512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod/* 21512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod * Copyright (C) 1998-2004 David Turner and Werner Lemberg 31512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod * Copyright (C) 2004,2007 Red Hat, Inc. 41512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod * 51512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod * This is part of HarfBuzz, an OpenType Layout engine library. 61512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod * 71512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod * Permission is hereby granted, without written agreement and without 81512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod * license or royalty fees, to use, copy, modify, and distribute this 91512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod * software and its documentation for any purpose, provided that the 101512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod * above copyright notice and the following two paragraphs appear in 111512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod * all copies of this software. 121512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod * 131512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR 141512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 151512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN 161512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 171512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod * DAMAGE. 181512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod * 191512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, 201512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 211512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS 221512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO 231512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 241512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod * 251512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod * Red Hat Author(s): Owen Taylor, Behdad Esfahbod 261512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod */ 271512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 281512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#ifndef HARFBUZZ_BUFFER_PRIVATE_H 291512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define HARFBUZZ_BUFFER_PRIVATE_H 301512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 311512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#include "harfbuzz-impl.h" 321512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#include "harfbuzz-buffer.h" 331512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 341512a7357513b72e2a07dda706a176bb23d694e9Behdad EsfahbodHB_BEGIN_HEADER 351512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 361512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define HB_GLYPH_PROPERTIES_UNKNOWN 0xFFFF 371512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 381512a7357513b72e2a07dda706a176bb23d694e9Behdad EsfahbodHB_INTERNAL void 391512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod_hb_buffer_swap( HB_Buffer buffer ); 401512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 411512a7357513b72e2a07dda706a176bb23d694e9Behdad EsfahbodHB_INTERNAL void 421512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod_hb_buffer_clear_output( HB_Buffer buffer ); 431512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 441512a7357513b72e2a07dda706a176bb23d694e9Behdad EsfahbodHB_INTERNAL HB_Error 451512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod_hb_buffer_clear_positions( HB_Buffer buffer ); 461512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 471512a7357513b72e2a07dda706a176bb23d694e9Behdad EsfahbodHB_INTERNAL HB_Error 481512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod_hb_buffer_add_output_glyphs( HB_Buffer buffer, 491512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod HB_UShort num_in, 501512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod HB_UShort num_out, 511512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod HB_UShort *glyph_data, 521512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod HB_UShort component, 531512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod HB_UShort ligID ); 541512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 551512a7357513b72e2a07dda706a176bb23d694e9Behdad EsfahbodHB_INTERNAL HB_Error 561512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod_hb_buffer_add_output_glyph ( HB_Buffer buffer, 571512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod HB_UInt glyph_index, 581512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod HB_UShort component, 591512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod HB_UShort ligID ); 601512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 611512a7357513b72e2a07dda706a176bb23d694e9Behdad EsfahbodHB_INTERNAL HB_Error 621512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod_hb_buffer_copy_output_glyph ( HB_Buffer buffer ); 631512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 641512a7357513b72e2a07dda706a176bb23d694e9Behdad EsfahbodHB_INTERNAL HB_Error 651512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod_hb_buffer_replace_output_glyph ( HB_Buffer buffer, 661512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod HB_UInt glyph_index, 671512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod HB_Bool inplace ); 681512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 691512a7357513b72e2a07dda706a176bb23d694e9Behdad EsfahbodHB_INTERNAL HB_UShort 701512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod_hb_buffer_allocate_ligid( HB_Buffer buffer ); 711512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 721512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 731512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod/* convenience macros */ 741512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 751512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define IN_GLYPH( pos ) (buffer->in_string[(pos)].gindex) 761512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define IN_ITEM( pos ) (&buffer->in_string[(pos)]) 771512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define IN_CURGLYPH() (buffer->in_string[buffer->in_pos].gindex) 781512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define IN_CURITEM() (&buffer->in_string[buffer->in_pos]) 791512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define IN_PROPERTIES( pos ) (buffer->in_string[(pos)].properties) 801512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define IN_LIGID( pos ) (buffer->in_string[(pos)].ligID) 811512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define IN_COMPONENT( pos ) (buffer->in_string[(pos)].component) 821512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define POSITION( pos ) (&buffer->positions[(pos)]) 831512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define OUT_GLYPH( pos ) (buffer->out_string[(pos)].gindex) 841512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define OUT_ITEM( pos ) (&buffer->out_string[(pos)]) 851512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 861512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define CHECK_Property( gdef, index, flags, property ) \ 871512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod ( ( error = _HB_GDEF_Check_Property( (gdef), (index), (flags), \ 881512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod (property) ) ) != HB_Err_Ok ) 891512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 901512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define ADD_String( buffer, num_in, num_out, glyph_data, component, ligID ) \ 911512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod ( ( error = _hb_buffer_add_output_glyphs( (buffer), \ 921512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod (num_in), (num_out), \ 931512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod (glyph_data), (component), (ligID) \ 941512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod ) ) != HB_Err_Ok ) 951512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define ADD_Glyph( buffer, glyph_index, component, ligID ) \ 961512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod ( ( error = _hb_buffer_add_output_glyph( (buffer), \ 971512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod (glyph_index), (component), (ligID) \ 981512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod ) ) != HB_Err_Ok ) 991512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define REPLACE_Glyph( buffer, glyph_index, nesting_level ) \ 1001512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod ( ( error = _hb_buffer_replace_output_glyph( (buffer), (glyph_index), \ 1011512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod (nesting_level) == 1 ) ) != HB_Err_Ok ) 1021512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define COPY_Glyph( buffer ) \ 1031512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod ( (error = _hb_buffer_copy_output_glyph ( buffer ) ) != HB_Err_Ok ) 1041512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 1051512a7357513b72e2a07dda706a176bb23d694e9Behdad EsfahbodHB_END_HEADER 1061512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 1071512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#endif /* HARFBUZZ_BUFFER_PRIVATE_H */ 108