11512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod/* 21512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod * Copyright (C) 1998-2004 David Turner and Werner Lemberg 31512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod * Copyright (C) 2006 Behdad Esfahbod 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 261512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#ifndef HARFBUZZ_STREAM_PRIVATE_H 271512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define HARFBUZZ_STREAM_PRIVATE_H 281512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 291512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#include "harfbuzz-impl.h" 301512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#include "harfbuzz-stream.h" 311512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 321512a7357513b72e2a07dda706a176bb23d694e9Behdad EsfahbodHB_BEGIN_HEADER 331512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 341512a7357513b72e2a07dda706a176bb23d694e9Behdad EsfahbodHB_INTERNAL void 351512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod_hb_close_stream( HB_Stream stream ); 361512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 371512a7357513b72e2a07dda706a176bb23d694e9Behdad EsfahbodHB_INTERNAL HB_Int 381512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod_hb_stream_pos( HB_Stream stream ); 391512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 401512a7357513b72e2a07dda706a176bb23d694e9Behdad EsfahbodHB_INTERNAL HB_Error 411512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod_hb_stream_seek( HB_Stream stream, 421512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod HB_UInt pos ); 431512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 441512a7357513b72e2a07dda706a176bb23d694e9Behdad EsfahbodHB_INTERNAL HB_Error 451512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod_hb_stream_frame_enter( HB_Stream stream, 461512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod HB_UInt size ); 471512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 481512a7357513b72e2a07dda706a176bb23d694e9Behdad EsfahbodHB_INTERNAL void 491512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod_hb_stream_frame_exit( HB_Stream stream ); 501512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 511512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod/* convenience macros */ 521512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 531512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define SET_ERR(c) ( (error = (c)) != 0 ) 541512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 551512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define GOTO_Table(tag) (0) 561512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define FILE_Pos() _hb_stream_pos( stream ) 571512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define FILE_Seek(pos) SET_ERR( _hb_stream_seek( stream, pos ) ) 581512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define ACCESS_Frame(size) SET_ERR( _hb_stream_frame_enter( stream, size ) ) 591512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define FORGET_Frame() _hb_stream_frame_exit( stream ) 601512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 611512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define GET_Byte() (*stream->cursor++) 621512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define GET_Short() (stream->cursor += 2, (HB_Short)( \ 631512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod (*(((HB_Byte*)stream->cursor)-2) << 8) | \ 641512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod *(((HB_Byte*)stream->cursor)-1) \ 651512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod )) 661512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define GET_Long() (stream->cursor += 4, (HB_Int)( \ 671512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod (*(((HB_Byte*)stream->cursor)-4) << 24) | \ 681512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod (*(((HB_Byte*)stream->cursor)-3) << 16) | \ 691512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod (*(((HB_Byte*)stream->cursor)-2) << 8) | \ 701512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod *(((HB_Byte*)stream->cursor)-1) \ 711512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod )) 721512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 731512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 741512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define GET_Char() ((HB_Char)GET_Byte()) 751512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define GET_UShort() ((HB_UShort)GET_Short()) 761512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define GET_ULong() ((HB_UInt)GET_Long()) 771512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#define GET_Tag4() GET_ULong() 781512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 791512a7357513b72e2a07dda706a176bb23d694e9Behdad EsfahbodHB_END_HEADER 801512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod 811512a7357513b72e2a07dda706a176bb23d694e9Behdad Esfahbod#endif /* HARFBUZZ_STREAM_PRIVATE_H */ 82