1 /*============================================================================ 2 epub2txt v2 3 wraptext.h 4 Copyright (c)2020 Kevin Boone, GPL v3.0 5 ============================================================================*/ 6 7 #ifndef __WRAPTEXT_H 8 #define __WRAPTEXT_H 9 10 #include 11 12 // The largest number of bytes required to store a unicode character as 13 // UTF8, including a terminating 0 14 #define WT_UTF8_MAX_BYTES 8 15 16 // Hard line break should be an unusued code point 17 #define WT_HARD_LINE_BREAK 9999 18 19 typedef uint32_t WT_UTF32; 20 typedef char WT_UTF8; 21 22 typedef void (*WrapTextOutputFn) (void *app_data, WT_UTF32 c); 23 24 struct _WrapTextContextPriv; 25 26 typedef struct _WrapTextContext 27 { 28 struct _WrapTextContextPriv *priv; 29 } WrapTextContext; 30 31 #ifdef __CPLUSPLUS 32 extern "C" { 33 #endif 34 35 void wraptext_wrap_utf32 (WrapTextContext *context, const WT_UTF32 *utf32); 36 37 WrapTextContext *wraptext_context_new (void); 38 39 void wraptext_context_free (WrapTextContext *self); 40 41 void wraptext_context_set_output_fn (WrapTextContext *self, 42 WrapTextOutputFn fn); 43 44 unsigned int wraptext_context_get_fmt (WrapTextContext *self); 45 void wraptext_context_zero_fmt (WrapTextContext *self); 46 void wraptext_context_set_fmt (WrapTextContext *self, unsigned int fmt); 47 void wraptext_context_reset_fmt (WrapTextContext *self, unsigned int fmt); 48 void wraptext_context_set_app_opts (WrapTextContext *self, void *app_opts); 49 void *wraptext_context_get_app_opts (WrapTextContext *self); 50 51 void wraptext_context_set_flags (WrapTextContext *self, int flags); 52 53 void wraptext_context_set_width (WrapTextContext *self, int width); 54 55 void wraptext_context_set_app_data (WrapTextContext *self, void *app_data); 56 57 void wraptext_context_reset (WrapTextContext *self); 58 59 void wraptext_eof (WrapTextContext *context); 60 61 WT_UTF32 *wraptext_convert_utf8_to_utf32 (const WT_UTF8 *utf8); 62 63 const int wraptext_utf32_length (const WT_UTF32 *s); 64 65 #ifdef __CPLUSPLUS 66 } 67 #endif 68 69 #endif