fribidi.h | fribidi.h | |||
---|---|---|---|---|
skipping to change at line 27 | skipping to change at line 27 | |||
* Free Software Foundation, Inc., 59 Temple Place, Suite 330, | * Free Software Foundation, Inc., 59 Temple Place, Suite 330, | |||
* Boston, MA 02111-1307, USA | * Boston, MA 02111-1307, USA | |||
* | * | |||
* For licensing issues, contact <dov@imagic.weizmann.ac.il> and | * For licensing issues, contact <dov@imagic.weizmann.ac.il> and | |||
* <fwpg@sharif.edu>. | * <fwpg@sharif.edu>. | |||
*/ | */ | |||
#ifndef FRIBIDI_H | #ifndef FRIBIDI_H | |||
#define FRIBIDI_H | #define FRIBIDI_H | |||
#ifndef NULL | ||||
#define NULL 0 | ||||
#endif | ||||
#include "fribidi_config.h" | #include "fribidi_config.h" | |||
#include "fribidi_unicode.h" | #include "fribidi_unicode.h" | |||
#include "fribidi_mem.h" | ||||
#include "fribidi_types.h" | #include "fribidi_types.h" | |||
#ifndef FRIBIDI_NO_CHARSETS | #ifndef FRIBIDI_NO_CHARSETS | |||
#include "fribidi_char_sets.h" | #include "fribidi_char_sets.h" | |||
#endif | #endif | |||
#ifdef __cplusplus | #ifdef __cplusplus | |||
extern "C" | extern "C" | |||
{ | { | |||
#endif | #endif | |||
fribidi_boolean fribidi_log2vis ( /* input */ | FRIBIDI_API fribidi_boolean fribidi_log2vis ( /* input */ | |||
FriBidiChar *str, FriBidiStrIndex len, | FriBidiChar *str, | |||
FriBidiCharType *pbase_dirs, | FriBidiStrIndex len, | |||
/* output */ | FriBidiCharType *pbase_dirs, | |||
FriBidiChar *visual_str, | /* output */ | |||
FriBidiStrIndex *position_L_to_V_list, | FriBidiChar *visual_str, | |||
FriBidiStrIndex *position_V_to_L_list, | FriBidiStrIndex | |||
FriBidiLevel *embedding_level_list); | *position_L_to_V_list, | |||
FriBidiStrIndex | ||||
*position_V_to_L_list, | ||||
FriBidiLevel | ||||
*embedding_level_list); | ||||
fribidi_boolean fribidi_log2vis_get_embedding_levels ( /* input */ | FRIBIDI_API fribidi_boolean fribidi_log2vis_get_embedding_levels ( /* i | |||
FriBidiChar *str, | nput */ | |||
FriBidiStrIndex len | FriBidi | |||
, | Char | |||
FriBidiCharType | *str, | |||
*pbase_dir, | FriBidi | |||
/* output */ | StrIndex | |||
FriBidiLevel | len, | |||
*embedding_level_li | FriBidi | |||
st); | CharType | |||
*pbase_ | ||||
dir, | ||||
/* outp | ||||
ut */ | ||||
FriBidi | ||||
Level | ||||
*embedd | ||||
ing_level_list); | ||||
/*====================================================================== | /*====================================================================== | |||
* fribidi_remove_bidi_marks() removes bidirectional marks, and returns | * fribidi_remove_bidi_marks() removes bidirectional marks, and returns | |||
* the new length, also updates each of other inputs if not NULL. | * the new length, also updates each of other inputs if not NULL. | |||
*----------------------------------------------------------------------*/ | *----------------------------------------------------------------------*/ | |||
FriBidiStrIndex fribidi_remove_bidi_marks (FriBidiChar *str, | FRIBIDI_API FriBidiStrIndex fribidi_remove_bidi_marks (FriBidiChar *str, | |||
FriBidiStrIndex length, | FriBidiStrIndex | |||
FriBidiStrIndex | length, | |||
*position_to_this_list, | FriBidiStrIndex | |||
FriBidiStrIndex | *position_to_this_l | |||
*position_from_this_list, | ist, | |||
FriBidiLevel | FriBidiStrIndex | |||
*embedding_level_list); | *position_from_this | |||
_list, | ||||
FriBidiLevel | ||||
*embedding_level_li | ||||
st); | ||||
/*====================================================================== | /*====================================================================== | |||
* fribidi_get_type() returns bidi type of a character. | * fribidi_get_type() returns bidi type of a character. | |||
*----------------------------------------------------------------------*/ | *----------------------------------------------------------------------*/ | |||
FriBidiCharType fribidi_get_type_internal (FriBidiChar uch); | FRIBIDI_API FriBidiCharType fribidi_get_type (FriBidiChar uch); | |||
#define fribidi_get_type(uch) fribidi_get_type_internal(uch) | ||||
/*====================================================================== | /*====================================================================== | |||
* fribidi_get_types() returns bidi type of a string. | * fribidi_get_types() returns bidi type of a string. | |||
*----------------------------------------------------------------------*/ | *----------------------------------------------------------------------*/ | |||
void fribidi_get_types ( /* input */ | FRIBIDI_API void fribidi_get_types ( /* input */ | |||
FriBidiChar *str, FriBidiStrIndex len, | FriBidiChar *str, | |||
/* output */ | FriBidiStrIndex len, | |||
FriBidiCharType *type); | /* output */ | |||
FriBidiCharType *type); | ||||
/*====================================================================== | ||||
* fribidi_get_mirror_char() returns the mirrored character, if any. | ||||
*----------------------------------------------------------------------*/ | ||||
FRIBIDI_API fribidi_boolean fribidi_get_mirror_char ( | ||||
/* Input */ | ||||
FriBidiChar ch, | ||||
/* Output */ | ||||
FriBidiChar | ||||
*mirrored_ch); | ||||
/*====================================================================== | /*====================================================================== | |||
* fribidi_get_mirror_char() returns the mirrored character, if input | * fribidi_get_mirror_char() returns the mirrored character, if input | |||
* character has a mirror, or the input itself. | * character has a mirror, or the input itself. | |||
* if mirrored_ch is NULL, just returns if character has a mirror or not. | * if mirrored_ch is NULL, just returns if character has a mirror or not. | |||
*----------------------------------------------------------------------*/ | *----------------------------------------------------------------------*/ | |||
fribidi_boolean fribidi_get_mirror_char ( /* Input */ | FRIBIDI_API fribidi_boolean fribidi_get_mirror_char ( /* Input */ | |||
FriBidiChar ch, | FriBidiChar ch, | |||
/* Output */ | /* Output */ | |||
FriBidiChar *mirrored_ch); | FriBidiChar | |||
*mirrored_ch); | ||||
/*====================================================================== | /*====================================================================== | |||
* fribidi_mirroring_status() returns whether mirroring is on or off, | * fribidi_mirroring_status() returns whether mirroring is on or off, | |||
* default is on. | * default is on. | |||
*----------------------------------------------------------------------*/ | *----------------------------------------------------------------------*/ | |||
fribidi_boolean fribidi_mirroring_status (void); | FRIBIDI_API fribidi_boolean fribidi_mirroring_status (void); | |||
/*====================================================================== | /*====================================================================== | |||
* fribidi_set_mirroring() sets mirroring on or off. | * fribidi_set_mirroring() sets mirroring on or off. | |||
*----------------------------------------------------------------------*/ | *----------------------------------------------------------------------*/ | |||
void fribidi_set_mirroring (fribidi_boolean mirror); | FRIBIDI_API void fribidi_set_mirroring (fribidi_boolean mirror); | |||
/*====================================================================== | /*====================================================================== | |||
* fribidi_reorder_nsm_status() returns whether reordering of NSM | * fribidi_reorder_nsm_status() returns whether reordering of NSM | |||
* sequences is on or off, default is off. | * sequences is on or off, default is off. | |||
*----------------------------------------------------------------------*/ | *----------------------------------------------------------------------*/ | |||
fribidi_boolean fribidi_reorder_nsm_status (void); | FRIBIDI_API fribidi_boolean fribidi_reorder_nsm_status (void); | |||
/*====================================================================== | /*====================================================================== | |||
* fribidi_set_reorder_nsm() sets reordering of NSM characters on or off. | * fribidi_set_reorder_nsm() sets reordering of NSM characters on or off. | |||
*----------------------------------------------------------------------*/ | *----------------------------------------------------------------------*/ | |||
void fribidi_set_reorder_nsm (fribidi_boolean); | FRIBIDI_API void fribidi_set_reorder_nsm (fribidi_boolean); | |||
/*====================================================================== | /*====================================================================== | |||
* fribidi_set_debug() turn on or off debugging, default is off, return | * fribidi_set_debug() turn on or off debugging, default is off, return | |||
* false is fribidi is not compiled with debug enabled. | * false is fribidi is not compiled with debug enabled. | |||
*----------------------------------------------------------------------*/ | *----------------------------------------------------------------------*/ | |||
fribidi_boolean fribidi_set_debug (fribidi_boolean debug); | FRIBIDI_API fribidi_boolean fribidi_set_debug (fribidi_boolean debug); | |||
/* fribidi_utils.c */ | /* fribidi_utils.c */ | |||
/*====================================================================== | /*====================================================================== | |||
* fribidi_find_string_changes() finds the bounding box of the section | * fribidi_find_string_changes() finds the bounding box of the section | |||
* of characters that need redrawing. It returns the start and the | * of characters that need redrawing. It returns the start and the | |||
* length of the section in the new string that needs redrawing. | * length of the section in the new string that needs redrawing. | |||
*----------------------------------------------------------------------*/ | *----------------------------------------------------------------------*/ | |||
void fribidi_find_string_changes ( /* input */ | FRIBIDI_API void fribidi_find_string_changes ( /* input */ | |||
FriBidiChar *old_str, | FriBidiChar *old_str, | |||
FriBidiStrIndex old_len, | FriBidiStrIndex old_len, | |||
FriBidiChar *new_str, | FriBidiChar *new_str, | |||
FriBidiStrIndex new_len, | FriBidiStrIndex new_len, | |||
/* output */ | /* output */ | |||
FriBidiStrIndex *change_start, | FriBidiStrIndex | |||
FriBidiStrIndex *change_len); | *change_start, | |||
FriBidiStrIndex *change_len | ||||
); | ||||
/*====================================================================== | /*====================================================================== | |||
* The find_visual_ranges() function is used to convert between a | * The find_visual_ranges() function is used to convert between a | |||
* continous span in either logical or visual space to a one, two or | * continous span in either logical or visual space to a one, two or | |||
* three discontinous spans in the other space. The function outputs | * three discontinous spans in the other space. The function outputs | |||
* the number of ranges needed to display the mapped range as | * the number of ranges needed to display the mapped range as | |||
* well as the resolved ranges. | * well as the resolved ranges. | |||
* | * | |||
* The variable is_v2l_map indicates whether the position map is | * The variable is_v2l_map indicates whether the position map is | |||
* is in the direction of visual-to-logical. This information is | * is in the direction of visual-to-logical. This information is | |||
skipping to change at line 169 | skipping to change at line 190 | |||
* FriBidiStrIndex sel_span[2] = {10,45}; | * FriBidiStrIndex sel_span[2] = {10,45}; | |||
* | * | |||
* fribidi_map_range(sel_span, | * fribidi_map_range(sel_span, | |||
* TRUE, | * TRUE, | |||
* length, | * length, | |||
* vis2log_map, | * vis2log_map, | |||
* embedding_levels, | * embedding_levels, | |||
* // output | * // output | |||
* &num_vis_ranges, *vis_ranges); | * &num_vis_ranges, *vis_ranges); | |||
**----------------------------------------------------------------------*/ | **----------------------------------------------------------------------*/ | |||
void fribidi_map_range (FriBidiStrIndex span[2], FriBidiStrIndex len, | FRIBIDI_API void fribidi_map_range (FriBidiStrIndex span[2], | |||
fribidi_boolean is_v2l_map, | FriBidiStrIndex len, | |||
FriBidiStrIndex *position_map, | fribidi_boolean is_v2l_map, | |||
FriBidiLevel *embedding_level_list, | FriBidiStrIndex *position_map, | |||
/* output */ | FriBidiLevel *embedding_level_list, | |||
int *num_mapped_spans, FriBidiStrIndex spans[3][2] | /* output */ | |||
); | int *num_mapped_spans, | |||
FriBidiStrIndex spans[3][2]); | ||||
/*====================================================================== | /*====================================================================== | |||
* fribidi_is_char_rtl() answers the question whether a character | * fribidi_is_char_rtl() answers the question whether a character | |||
* was resolved in the rtl direction. This simply involves asking | * was resolved in the rtl direction. This simply involves asking | |||
* if the embedding level for the character is odd. | * if the embedding level for the character is odd. | |||
*----------------------------------------------------------------------*/ | *----------------------------------------------------------------------*/ | |||
fribidi_boolean fribidi_is_char_rtl (FriBidiLevel *embedding_level_list, | FRIBIDI_API fribidi_boolean fribidi_is_char_rtl (FriBidiLevel | |||
FriBidiCharType base_dir, | *embedding_level_list, | |||
FriBidiStrIndex idx); | FriBidiCharType base_dir, | |||
FriBidiStrIndex idx); | ||||
/*====================================================================== | /*====================================================================== | |||
* fribidi_xpos_resolve() does the complicated translation of | * fribidi_xpos_resolve() does the complicated translation of | |||
* an x-coordinate, e.g. as received through a mouse press event, | * an x-coordinate, e.g. as received through a mouse press event, | |||
* to the logical and the visual position the xcoordinate is closest | * to the logical and the visual position the xcoordinate is closest | |||
* to. It will also resolve the direction of the cursor according | * to. It will also resolve the direction of the cursor according | |||
* to the embedding level of the closest character. | * to the embedding level of the closest character. | |||
* | * | |||
* It does this through the following logics: | * It does this through the following logics: | |||
* Here are the different possibilities: | * Here are the different possibilities: | |||
skipping to change at line 233 | skipping to change at line 257 | |||
* at position x_pos is rtl. | * at position x_pos is rtl. | |||
* res_attach_before Whether the x_pos is cutting the bounding | * res_attach_before Whether the x_pos is cutting the bounding | |||
* box in such a way that the visual cursor should be | * box in such a way that the visual cursor should be | |||
* be positioned before the following logical character. | * be positioned before the following logical character. | |||
* Note that in the bidi context, the positions "after | * Note that in the bidi context, the positions "after | |||
* a logical character" and "before the following logical | * a logical character" and "before the following logical | |||
* character" is not necessarily the same. If x_pos is | * character" is not necessarily the same. If x_pos is | |||
* beyond the end of the line, res_attach_before is true. | * beyond the end of the line, res_attach_before is true. | |||
* | * | |||
*----------------------------------------------------------------------*/ | *----------------------------------------------------------------------*/ | |||
void fribidi_xpos_resolve (int x_pos, int x_offset, | FRIBIDI_API void fribidi_xpos_resolve (int x_pos, | |||
FriBidiStrIndex len, | int x_offset, | |||
FriBidiLevel *embedding_level_list, | FriBidiStrIndex len, | |||
FriBidiCharType base_dir, | FriBidiLevel *embedding_level_list, | |||
FriBidiStrIndex *vis2log, int *char_widths, | FriBidiCharType base_dir, | |||
/* output */ | FriBidiStrIndex *vis2log, | |||
FriBidiStrIndex *res_log_pos, | int *char_widths, | |||
FriBidiStrIndex *res_vis_pos, | /* output */ | |||
int *res_cursor_x_pos, | FriBidiStrIndex *res_log_pos, | |||
fribidi_boolean * res_cursor_dir_is_rtl, | FriBidiStrIndex *res_vis_pos, | |||
fribidi_boolean * res_attach_before); | int *res_cursor_x_pos, | |||
fribidi_boolean | ||||
*res_cursor_dir_is_rtl, | ||||
fribidi_boolean *res_attach_before) | ||||
; | ||||
/*====================================================================== | /*====================================================================== | |||
* fribidi_runs_log2vis takes a list of logical runs and returns a | * fribidi_runs_log2vis takes a list of logical runs and returns a | |||
* a list of visual runs. A run is defined as a sequence that has | * a list of visual runs. A run is defined as a sequence that has | |||
* the same attributes. | * the same attributes. | |||
*----------------------------------------------------------------------*/ | *----------------------------------------------------------------------*/ | |||
void fribidi_runs_log2vis ( /* input */ | FRIBIDI_API void fribidi_runs_log2vis ( /* input */ | |||
FriBidiList *logical_runs, /* List of F | FriBidiList *logical_runs, /* L | |||
riBidiRunType */ | ist of FriBidiRunType */ | |||
FriBidiStrIndex len, FriBidiStrIndex *log2vis, | ||||
FriBidiCharType base_dir, | FriBidiStrIndex len, | |||
/* output */ | FriBidiStrIndex *log2vis, | |||
FriBidiList **visual_runs); | FriBidiCharType base_dir, | |||
/* output */ | ||||
FriBidiList **visual_runs); | ||||
#ifdef __cplusplus | #ifdef __cplusplus | |||
} | } | |||
#endif | #endif | |||
#endif /* FRIBIDI_H */ | #endif /* FRIBIDI_H */ | |||
End of changes. 18 change blocks. | ||||
79 lines changed or deleted | 118 lines changed or added | |||
fribidi_char_sets.h | fribidi_char_sets.h | |||
---|---|---|---|---|
skipping to change at line 52 | skipping to change at line 52 | |||
#include "fribidi_char_sets_cp1256.h" | #include "fribidi_char_sets_cp1256.h" | |||
#include "fribidi_char_sets_isiri_3342.h" | #include "fribidi_char_sets_isiri_3342.h" | |||
/* The following enum members are going to be used as array indices, | /* The following enum members are going to be used as array indices, | |||
so they must be numbered from 0, and with the fixed order, | so they must be numbered from 0, and with the fixed order, | |||
FRIBIDI_CHARSET_DEFAULT is the one that when a charset leaves it's | FRIBIDI_CHARSET_DEFAULT is the one that when a charset leaves it's | |||
state with fribidi_charset_leave(), it gets into DEFAULT mode, | state with fribidi_charset_leave(), it gets into DEFAULT mode, | |||
so it must have no initialization. */ | so it must have no initialization. */ | |||
typedef enum | typedef enum | |||
{ | { | |||
FRIBIDI_CHARSET_NOT_FOUND, | FRIBIDI_CHAR_SET_NOT_FOUND, | |||
FRIBIDI_CHARSET_UTF8, | #define _FRIBIDI_ADD_CHAR_SET(CHAR_SET, char_set) FRIBIDI_CHAR_SET_##CHAR_S | |||
FRIBIDI_CHARSET_CAP_RTL, | ET, | |||
FRIBIDI_CHARSET_ISO8859_6, | #include "fribidi_char_sets.i" | |||
FRIBIDI_CHARSET_ISO8859_8, | #undef _FRIBIDI_ADD_CHAR_SET | |||
FRIBIDI_CHARSET_CP1255, | ||||
FRIBIDI_CHARSET_CP1256, | ||||
FRIBIDI_CHARSET_ISIRI_3342, | ||||
FRIBIDI_CHAR_SETS_NUM_PLUS_ONE, | FRIBIDI_CHAR_SETS_NUM_PLUS_ONE, | |||
FRIBIDI_CHARSET_DEFAULT = FRIBIDI_CHARSET_UTF8 | FRIBIDI_CHAR_SET_DEFAULT = FRIBIDI_CHAR_SET_UTF8 | |||
} | } | |||
FriBidiCharSet; | FriBidiCharSet; | |||
#define FRIBIDI_CHAR_SETS_NUM (FRIBIDI_CHAR_SETS_NUM_PLUS_ONE - 1) | #define FRIBIDI_CHAR_SETS_NUM (FRIBIDI_CHAR_SETS_NUM_PLUS_ONE - 1) | |||
/* Convert the character string "s" in charset "char_set" to unicode | /* Convert the character string "s" in charset "char_set" to unicode | |||
string "us" and return it's length. */ | string "us" and return it's length. */ | |||
int fribidi_charset_to_unicode (FriBidiCharSet char_set, char *s, | FRIBIDI_API int fribidi_charset_to_unicode (FriBidiCharSet char_set, | |||
int length, | char *s, int length, | |||
/* output */ | /* output */ | |||
FriBidiChar *us); | FriBidiChar *us); | |||
/* Convert the unicode string "us" with length "length" to character | /* Convert the unicode string "us" with length "length" to character | |||
string "s" in charset "char_set" and return it's length. */ | string "s" in charset "char_set" and return it's length. */ | |||
int fribidi_unicode_to_charset (FriBidiCharSet char_set, FriBidiChar *us, | FRIBIDI_API int fribidi_unicode_to_charset (FriBidiCharSet char_set, | |||
int length, | FriBidiChar *us, int length, | |||
/* output */ | /* output */ | |||
char *s); | char *s); | |||
/* Return the string containing the name of the charset. */ | /* Return the string containing the name of the charset. */ | |||
char *fribidi_char_set_name (FriBidiCharSet char_set); | FRIBIDI_API char *fribidi_char_set_name (FriBidiCharSet char_set); | |||
/* Return the string containing the title (name with a short description) | /* Return the string containing the title (name with a short description) | |||
of the charset. */ | of the charset. */ | |||
char *fribidi_char_set_title (FriBidiCharSet char_set); | FRIBIDI_API char *fribidi_char_set_title (FriBidiCharSet char_set); | |||
/* Return the string containing a descreption about the charset, if any. */ | /* Return the string containing a descreption about the charset, if any. */ | |||
char *fribidi_char_set_desc (FriBidiCharSet char_set); | FRIBIDI_API char *fribidi_char_set_desc (FriBidiCharSet char_set); | |||
/* Some charsets like CapRTL may need to change some fribidis tables, by | /* Some charsets like CapRTL may need to change some fribidis tables, by | |||
calling this function, they can do this changes. */ | calling this function, they can do this changes. */ | |||
fribidi_boolean fribidi_char_set_enter (FriBidiCharSet char_set); | FRIBIDI_API fribidi_boolean fribidi_char_set_enter (FriBidiCharSet | |||
char_set); | ||||
/* Some charsets like CapRTL may need to change some fribidis tables, by | /* Some charsets like CapRTL may need to change some fribidis tables, by | |||
calling this function, they can undo their changes, perhaps to enter | calling this function, they can undo their changes, perhaps to enter | |||
another mode. */ | another mode. */ | |||
fribidi_boolean fribidi_char_set_leave (FriBidiCharSet char_set); | FRIBIDI_API fribidi_boolean fribidi_char_set_leave (FriBidiCharSet | |||
char_set); | ||||
/* Return the charset which name is "s". */ | /* Return the charset which name is "s". */ | |||
FriBidiCharSet fribidi_parse_charset (char *s); | FRIBIDI_API FriBidiCharSet fribidi_parse_charset (char *s); | |||
#ifdef FRIBIDI_INTERFACE_1 | #ifdef FRIBIDI_INTERFACE_1 | |||
/* Interface version 1, deprecated, just for compatibility. */ | /* Interface version 1, deprecated, just for compatibility. */ | |||
int fribidi_charset_to_unicode_1 (FriBidiCharSet char_set, char *s, | FRIBIDI_API int fribidi_charset_to_unicode_1 (FriBidiCharSet char_set, | |||
/* output */ | char *s, | |||
FriBidiChar *us); | /* output */ | |||
FriBidiChar *us); | ||||
#define fribidi_charset_to_unicode fribidi_charset_to_unicode_1 | #define fribidi_charset_to_unicode fribidi_charset_to_unicode_1 | |||
/* Also old character sets. */ | /* Also old character sets. */ | |||
#define fribidi_utf8_to_unicode fribidi_utf8_to_unicode_1 | #define fribidi_utf8_to_unicode fribidi_utf8_to_unicode_1 | |||
#define fribidi_cap_rtl_to_unicode fribidi_cap_rtl_to_unicode_1 | #define fribidi_cap_rtl_to_unicode fribidi_cap_rtl_to_unicode_1 | |||
#define fribidi_iso8859_6_to_unicode fribidi_iso8859_6_to_unicode_1 | #define fribidi_iso8859_6_to_unicode fribidi_iso8859_6_to_unicode_1 | |||
#define fribidi_iso8859_8_to_unicode fribidi_iso8859_8_to_unicode_1 | #define fribidi_iso8859_8_to_unicode fribidi_iso8859_8_to_unicode_1 | |||
#define fribidi_cp1255_to_unicode fribidi_cp1255_to_unicode_1 | #define fribidi_cp1255_to_unicode fribidi_cp1255_to_unicode_1 | |||
#define fribidi_cp1256_to_unicode fribidi_cp1256_to_unicode_1 | #define fribidi_cp1256_to_unicode fribidi_cp1256_to_unicode_1 | |||
#define fribidi_isiri_3342_to_unicode fribidi_isiri_3342_to_unicode_1 | #define fribidi_isiri_3342_to_unicode fribidi_isiri_3342_to_unicode_1 | |||
End of changes. 11 change blocks. | ||||
26 lines changed or deleted | 26 lines changed or added | |||
fribidi_config.h | fribidi_config.h | |||
---|---|---|---|---|
#define FRIBIDI_PACKAGE "fribidi" | #define FRIBIDI_PACKAGE "fribidi" | |||
#define FRIBIDI_VERSION "0.10.4" | #define FRIBIDI_VERSION "0.10.5" | |||
#define FRIBIDI_MAJOR_VERSION 0 | #define FRIBIDI_MAJOR_VERSION 0 | |||
#define FRIBIDI_MINOR_VERSION 10 | #define FRIBIDI_MINOR_VERSION 10 | |||
#define FRIBIDI_MICRO_VERSION_STR "4" | #define FRIBIDI_MICRO_VERSION 5 | |||
#define FRIBIDI_INTERFACE_VERSION 2 | #define FRIBIDI_INTERFACE_VERSION 2 | |||
#define FRIBIDI_INTERFACE_VERSION_STR "2" | ||||
#if 0 | #if 0 /* FRIBIDI_NO_CHARSETS */ | |||
#define FRIBIDI_NO_CHARSETS 1 | #define FRIBIDI_NO_CHARSETS 1 | |||
#else | #else /* NOT FRIBIDI_NO_CHARSETS */ | |||
#undef FRIBIDI_NO_CHARSETS | #undef FRIBIDI_NO_CHARSETS | |||
#endif /* FRIBIDI_NO_CHARSETS */ | ||||
#define TOSTR(x) #x | ||||
#ifdef WIN32 | ||||
#ifdef FRIBIDI_EXPORTS | ||||
#define FRIBIDI_API __declspec(dllexport) | ||||
#else | ||||
#define FRIBIDI_API __declspec(dllimport) | ||||
#endif | #endif | |||
#define snprintf _snprintf | ||||
#else /* NOT WIN32 */ | ||||
#define FRIBIDI_API | ||||
#endif /* WIN32 */ | ||||
/* __BEGIN_DECLS should be used at the beginning of your declarations, | ||||
* so that C++ compilers don't mangle their names. Use __END_DECLS at | ||||
* the end of C declarations. */ | ||||
#undef __BEGIN_DECLS | ||||
#undef __END_DECLS | ||||
#ifdef __cplusplus | ||||
#define __BEGIN_DECLS extern "C" { | ||||
#define __END_DECLS } | ||||
#else /* NOT __cplusplus */ | ||||
#define __BEGIN_DECLS /* empty */ | ||||
#define __END_DECLS /* empty */ | ||||
#endif /* __cplusplus */ | ||||
#define FRIBIDI_TRUE 1 | ||||
#define FRIBIDI_FALSE 0 | ||||
#ifndef TRUE | ||||
#define TRUE FRIBIDI_TRUE | ||||
#endif /* TRUE */ | ||||
#ifndef FALSE | ||||
#define FALSE FRIBIDI_FALSE | ||||
#endif /* FALSE */ | ||||
End of changes. 7 change blocks. | ||||
5 lines changed or deleted | 14 lines changed or added | |||
fribidi_mem.h | fribidi_mem.h | |||
---|---|---|---|---|
skipping to change at line 25 | skipping to change at line 25 | |||
* along with this library, in a file named COPYING; if not, write to the | * along with this library, in a file named COPYING; if not, write to the | |||
* Free Software Foundation, Inc., 59 Temple Place, Suite 330, | * Free Software Foundation, Inc., 59 Temple Place, Suite 330, | |||
* Boston, MA 02111-1307, USA | * Boston, MA 02111-1307, USA | |||
* | * | |||
* For licensing issues, contact <fwpg@sharif.edu>. | * For licensing issues, contact <fwpg@sharif.edu>. | |||
*/ | */ | |||
#ifndef FRIBIDI_MEM_H | #ifndef FRIBIDI_MEM_H | |||
#define FRIBIDI_MEM_H | #define FRIBIDI_MEM_H | |||
#include <stdlib.h> | ||||
#include "fribidi_config.h" | #include "fribidi_config.h" | |||
#include "fribidi_types.h" | ||||
#ifdef __cplusplus | #ifdef __cplusplus | |||
extern "C" | extern "C" | |||
{ | { | |||
#endif | #endif | |||
#define FRIBIDI_INT8 char | ||||
#define FRIBIDI_INT16 short | ||||
#define FRIBIDI_INT32 long | ||||
#define FRIBIDI_INT int | ||||
typedef int fribidi_boolean; | ||||
typedef signed FRIBIDI_INT8 fribidi_int8; | ||||
typedef unsigned FRIBIDI_INT8 fribidi_uint8; | ||||
typedef signed FRIBIDI_INT16 fribidi_int16; | ||||
typedef unsigned FRIBIDI_INT16 fribidi_uint16; | ||||
typedef signed FRIBIDI_INT32 fribidi_int32; | ||||
typedef unsigned FRIBIDI_INT32 fribidi_uint32; | ||||
typedef signed FRIBIDI_INT fribidi_int; | ||||
typedef unsigned FRIBIDI_INT fribidi_uint; | ||||
#define FRIBIDI_TRUE 1 | ||||
#define FRIBIDI_FALSE 0 | ||||
#ifndef TRUE | ||||
#define TRUE FRIBIDI_TRUE | ||||
#endif | ||||
#ifndef FALSE | ||||
#define FALSE FRIBIDI_FALSE | ||||
#endif | ||||
typedef struct _FriBidiList FriBidiList; | ||||
struct _FriBidiList | ||||
{ | ||||
void *data; | ||||
FriBidiList *next; | ||||
FriBidiList *prev; | ||||
}; | ||||
FriBidiList *fribidi_list_append (FriBidiList *list, void *data); | FriBidiList *fribidi_list_append (FriBidiList *list, void *data); | |||
typedef struct _FriBidiMemChunk FriBidiMemChunk; | typedef struct _FriBidiMemChunk FriBidiMemChunk; | |||
#define FRIBIDI_ALLOC_ONLY 1 | #define FRIBIDI_ALLOC_ONLY 1 | |||
#define FRIBIDI_ALLOC_AND_FREE 2 | #define FRIBIDI_ALLOC_AND_FREE 2 | |||
FriBidiMemChunk *fribidi_mem_chunk_new (char *name, | FriBidiMemChunk *fribidi_mem_chunk_new (char *name, | |||
int atom_size, | int atom_size, | |||
unsigned long area_size, int type) ; | unsigned long area_size, int type) ; | |||
skipping to change at line 93 | skipping to change at line 58 | |||
#define fribidi_mem_chunk_create(type, pre_alloc, alloc_type) ( \ | #define fribidi_mem_chunk_create(type, pre_alloc, alloc_type) ( \ | |||
fribidi_mem_chunk_new (#type " mem chunks (" #pre_alloc ")", \ | fribidi_mem_chunk_new (#type " mem chunks (" #pre_alloc ")", \ | |||
sizeof (type), \ | sizeof (type), \ | |||
sizeof (type) * (pre_alloc), \ | sizeof (type) * (pre_alloc), \ | |||
(alloc_type)) \ | (alloc_type)) \ | |||
) | ) | |||
#define fribidi_chunk_new(type, chunk) ( \ | #define fribidi_chunk_new(type, chunk) ( \ | |||
(type *) fribidi_mem_chunk_alloc (chunk) \ | (type *) fribidi_mem_chunk_alloc (chunk) \ | |||
) | ) | |||
int fribidi_strcasecmp (const char *s1, const char *s2); | ||||
#ifdef __cplusplus | #ifdef __cplusplus | |||
} | } | |||
#endif | #endif | |||
#endif /* FRIBIDI_MEM_H */ | #endif /* FRIBIDI_MEM_H */ | |||
End of changes. 4 change blocks. | ||||
38 lines changed or deleted | 1 lines changed or added | |||
fribidi_types.h | fribidi_types.h | |||
---|---|---|---|---|
skipping to change at line 26 | skipping to change at line 26 | |||
* along with this library, in a file named COPYING; if not, write to the | * along with this library, in a file named COPYING; if not, write to the | |||
* Free Software Foundation, Inc., 59 Temple Place, Suite 330, | * Free Software Foundation, Inc., 59 Temple Place, Suite 330, | |||
* Boston, MA 02111-1307, USA | * Boston, MA 02111-1307, USA | |||
* | * | |||
* For licensing issues, contact <dov@imagic.weizmann.ac.il> and | * For licensing issues, contact <dov@imagic.weizmann.ac.il> and | |||
* <fwpg@sharif.edu>. | * <fwpg@sharif.edu>. | |||
*/ | */ | |||
#ifndef FRIBIDI_TYPES_H | #ifndef FRIBIDI_TYPES_H | |||
#define FRIBIDI_TYPES_H | #define FRIBIDI_TYPES_H | |||
#include "fribidi_mem.h" | #include "fribidi_config.h" | |||
#include <stdint.h> | ||||
#ifdef __cplusplus | #ifdef __cplusplus | |||
extern "C" | extern "C" | |||
{ | { | |||
#endif | #endif | |||
typedef int fribidi_boolean; | ||||
typedef int8_t fribidi_int8; | ||||
typedef uint8_t fribidi_uint8; | ||||
typedef int16_t fribidi_int16; | ||||
typedef uint16_t fribidi_uint16; | ||||
typedef int32_t fribidi_int32; | ||||
typedef uint32_t fribidi_uint32; | ||||
typedef int fribidi_int; | ||||
typedef unsigned int fribidi_uint; | ||||
typedef fribidi_int8 FriBidiLevel; | typedef fribidi_int8 FriBidiLevel; | |||
typedef fribidi_uint32 FriBidiChar; | typedef fribidi_uint32 FriBidiChar; | |||
typedef fribidi_int FriBidiStrIndex; | typedef fribidi_int FriBidiStrIndex; | |||
typedef fribidi_int32 FriBidiMaskType; | typedef fribidi_int32 FriBidiMaskType; | |||
typedef FriBidiMaskType FriBidiCharType; | typedef FriBidiMaskType FriBidiCharType; | |||
char *fribidi_type_name (FriBidiCharType c); | char *fribidi_type_name (FriBidiCharType c); | |||
/* The following type is used by fribidi_utils */ | /* The following type is used by fribidi_utils */ | |||
typedef struct | typedef struct | |||
{ | { | |||
FriBidiStrIndex length; | FriBidiStrIndex length; | |||
void *attribute; | void *attribute; | |||
} | } | |||
FriBidiRunType; | FriBidiRunType; | |||
/* The following type is used by fribdi_utils */ | ||||
typedef struct _FriBidiList FriBidiList; | ||||
struct _FriBidiList | ||||
{ | ||||
void *data; | ||||
FriBidiList *next; | ||||
FriBidiList *prev; | ||||
}; | ||||
#ifndef FRIBIDI_MAX_STRING_LENGTH | #ifndef FRIBIDI_MAX_STRING_LENGTH | |||
#define FRIBIDI_MAX_STRING_LENGTH (sizeof (FriBidiStrIndex) == 2 ? \ | #define FRIBIDI_MAX_STRING_LENGTH (sizeof (FriBidiStrIndex) == 2 ? \ | |||
0x7FFE : (sizeof (FriBidiStrIndex) == 1 ? \ | 0x7FFE : (sizeof (FriBidiStrIndex) == 1 ? \ | |||
0x7E : 0x8FFFFFFEL)) | 0x7E : 0x8FFFFFFEL)) | |||
#endif | #endif | |||
/* | /* | |||
* Define some bit masks, that character types are based on, each one has | * Define some bit masks, that character types are based on, each one has | |||
* only one bit on. | * only one bit on. | |||
*/ | */ | |||
skipping to change at line 195 | skipping to change at line 216 | |||
/* Is private-use value? */ | /* Is private-use value? */ | |||
#define FRIBIDI_TYPE_PRIVATE(p) ((p) < 0) | #define FRIBIDI_TYPE_PRIVATE(p) ((p) < 0) | |||
/* Return the direction of the level number, FRIBIDI_TYPE_LTR for even and | /* Return the direction of the level number, FRIBIDI_TYPE_LTR for even and | |||
FRIBIDI_TYPE_RTL for odds. */ | FRIBIDI_TYPE_RTL for odds. */ | |||
#define FRIBIDI_LEVEL_TO_DIR(lev) (FRIBIDI_TYPE_LTR | (lev & 1)) | #define FRIBIDI_LEVEL_TO_DIR(lev) (FRIBIDI_TYPE_LTR | (lev & 1)) | |||
/* Return the minimum level of the direction, 0 for FRIBIDI_TYPE_LTR and | /* Return the minimum level of the direction, 0 for FRIBIDI_TYPE_LTR and | |||
1 for FRIBIDI_TYPE_RTL and FRIBIDI_TYPE_AL. */ | 1 for FRIBIDI_TYPE_RTL and FRIBIDI_TYPE_AL. */ | |||
#define FRIBIDI_DIR_TO_LEVEL(dir) (dir & 1) | #define FRIBIDI_DIR_TO_LEVEL(dir) ((FriBidiLevel)(dir & 1)) | |||
/* Is right to left? */ | /* Is right to left? */ | |||
#define FRIBIDI_IS_RTL(p) ((p) & FRIBIDI_MASK_RTL) | #define FRIBIDI_IS_RTL(p) ((p) & FRIBIDI_MASK_RTL) | |||
/* Is arabic? */ | /* Is arabic? */ | |||
#define FRIBIDI_IS_ARABIC(p) ((p) & FRIBIDI_MASK_ARABIC) | #define FRIBIDI_IS_ARABIC(p) ((p) & FRIBIDI_MASK_ARABIC) | |||
/* Is strong? */ | /* Is strong? */ | |||
#define FRIBIDI_IS_STRONG(p) ((p) & FRIBIDI_MASK_STRONG) | #define FRIBIDI_IS_STRONG(p) ((p) & FRIBIDI_MASK_STRONG) | |||
/* Is weak? */ | /* Is weak? */ | |||
#define FRIBIDI_IS_WEAK(p) ((p) & FRIBIDI_MASK_WEAK) | #define FRIBIDI_IS_WEAK(p) ((p) & FRIBIDI_MASK_WEAK) | |||
skipping to change at line 273 | skipping to change at line 294 | |||
/* | /* | |||
* Define character types that char_type_tables use. | * Define character types that char_type_tables use. | |||
* define them to be 0, 1, 2, ... and then in fribidi_get_type.c map them | * define them to be 0, 1, 2, ... and then in fribidi_get_type.c map them | |||
* to FriBidiCharTypes. | * to FriBidiCharTypes. | |||
*/ | */ | |||
typedef char FriBidiPropCharType; | typedef char FriBidiPropCharType; | |||
enum FriBidiPropEnum | enum FriBidiPropEnum | |||
{ | { | |||
FRIBIDI_PROP_TYPE_LTR, /* Strong left to right */ | #define _FRIBIDI_ADD_TYPE(TYPE) FRIBIDI_PROP_TYPE_##TYPE, | |||
FRIBIDI_PROP_TYPE_RTL, /* Right to left characters */ | #include "fribidi_types.i" | |||
FRIBIDI_PROP_TYPE_AL, /* Arabic characters */ | #undef _FRIBIDI_ADD_TYPE | |||
FRIBIDI_PROP_TYPE_LRE, /* Left-To-Right embedding */ | ||||
FRIBIDI_PROP_TYPE_RLE, /* Right-To-Left embedding */ | ||||
FRIBIDI_PROP_TYPE_LRO, /* Left-To-Right override */ | ||||
FRIBIDI_PROP_TYPE_RLO, /* Right-To-Left override */ | ||||
FRIBIDI_PROP_TYPE_PDF, /* Pop directional override */ | ||||
FRIBIDI_PROP_TYPE_EN, /* European digit */ | ||||
FRIBIDI_PROP_TYPE_AN, /* Arabic digit */ | ||||
FRIBIDI_PROP_TYPE_ES, /* European number separator */ | ||||
FRIBIDI_PROP_TYPE_ET, /* European number terminator */ | ||||
FRIBIDI_PROP_TYPE_CS, /* Common Separator */ | ||||
FRIBIDI_PROP_TYPE_NSM, /* Non spacing mark */ | ||||
FRIBIDI_PROP_TYPE_BN, /* Boundary neutral */ | ||||
FRIBIDI_PROP_TYPE_BS, /* Block separator */ | ||||
FRIBIDI_PROP_TYPE_SS, /* Segment separator */ | ||||
FRIBIDI_PROP_TYPE_WS, /* Whitespace */ | ||||
FRIBIDI_PROP_TYPE_ON, /* Other Neutral */ | ||||
FRIBIDI_PROP_TYPE_WL, /* Weak left to right */ | ||||
FRIBIDI_PROP_TYPE_WR, /* Weak right to left */ | ||||
FRIBIDI_TYPES_COUNT /* Number of different character typ es */ | FRIBIDI_TYPES_COUNT /* Number of different character typ es */ | |||
}; | }; | |||
/* Map fribidi_prop_types to fribidi_types */ | /* Map fribidi_prop_types to fribidi_types */ | |||
extern FriBidiCharType *fribidi_prop_to_type; | extern FriBidiCharType *fribidi_prop_to_type; | |||
#ifdef __cplusplus | #ifdef __cplusplus | |||
} | } | |||
#endif | #endif | |||
End of changes. 5 change blocks. | ||||
23 lines changed or deleted | 26 lines changed or added | |||
fribidi_unicode.h | fribidi_unicode.h | |||
---|---|---|---|---|
/* FriBidi - Library of BiDi algorithm | /* FriBidi - Library of BiDi algorithm | |||
* Copyright (C) 2001,2002 Behdad Esfahbod. | * Copyright (C) 2001,2002,2005 Behdad Esfahbod. | |||
* | * | |||
* This library is free software; you can redistribute it and/or | * This library is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public | |||
* License as published by the Free Software Foundation; either | * License as published by the Free Software Foundation; either | |||
* version 2.1 of the License, or (at your option) any later version. | * version 2.1 of the License, or (at your option) any later version. | |||
* | * | |||
* This library is distributed in the hope that it will be useful, | * This library is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
* Lesser General Public License for more details. | * Lesser General Public License for more details. | |||
skipping to change at line 25 | skipping to change at line 25 | |||
* along with this library, in a file named COPYING; if not, write to the | * along with this library, in a file named COPYING; if not, write to the | |||
* Free Software Foundation, Inc., 59 Temple Place, Suite 330, | * Free Software Foundation, Inc., 59 Temple Place, Suite 330, | |||
* Boston, MA 02111-1307, USA | * Boston, MA 02111-1307, USA | |||
* | * | |||
* For licensing issues, contact <fwpg@sharif.edu>. | * For licensing issues, contact <fwpg@sharif.edu>. | |||
*/ | */ | |||
#ifndef FRIBIDI_UNICODE_H | #ifndef FRIBIDI_UNICODE_H | |||
#define FRIBIDI_UNICODE_H | #define FRIBIDI_UNICODE_H | |||
#include "fribidi_config.h" | ||||
#include "fribidi_types.h" | #include "fribidi_types.h" | |||
#ifdef __cplusplus | #ifdef __cplusplus | |||
extern "C" | extern "C" | |||
{ | { | |||
#endif | #endif | |||
/* Unicode version */ | /* Unicode version */ | |||
#define FRIBIDI_UNICODE_CHARS 0x110000 | #define FRIBIDI_UNICODE_CHARS (sizeof(FriBidiChar) >= 4 ? 0x110000 : 0x100 | |||
#define FRIBIDI_UNICODE_VERSION "3.2.0" | 00) | |||
#define FRIBIDI_UNICODE_VERSION "4.1.0" | ||||
/* UAX#9 Unicode BiDirectional Algorithm */ | /* UAX#9 Unicode BiDirectional Algorithm */ | |||
#define UNI_MAX_BIDI_LEVEL 61 | #define UNI_MAX_BIDI_LEVEL 61 | |||
/* BiDirectional marks */ | /* BiDirectional marks */ | |||
#define UNI_LRM 0x200E | #define UNI_LRM 0x200E | |||
#define UNI_RLM 0x200F | #define UNI_RLM 0x200F | |||
#define UNI_LRE 0x202A | #define UNI_LRE 0x202A | |||
#define UNI_RLE 0x202B | #define UNI_RLE 0x202B | |||
#define UNI_PDF 0x202C | #define UNI_PDF 0x202C | |||
skipping to change at line 63 | skipping to change at line 64 | |||
#define UNI_ZWNJ 0x200C | #define UNI_ZWNJ 0x200C | |||
#define UNI_ZWJ 0x200D | #define UNI_ZWJ 0x200D | |||
/* Hebrew and Arabic */ | /* Hebrew and Arabic */ | |||
#define UNI_HEBREW_ALEF 0x05D0 | #define UNI_HEBREW_ALEF 0x05D0 | |||
#define UNI_ARABIC_ALEF 0x0627 | #define UNI_ARABIC_ALEF 0x0627 | |||
#define UNI_ARABIC_ZERO 0x0660 | #define UNI_ARABIC_ZERO 0x0660 | |||
#define UNI_FARSI_ZERO 0x06F0 | #define UNI_FARSI_ZERO 0x06F0 | |||
/* wcwidth functions */ | /* wcwidth functions */ | |||
int fribidi_wcwidth (FriBidiChar ch); | FRIBIDI_API int fribidi_wcwidth (FriBidiChar ch); | |||
int fribidi_wcswidth (const FriBidiChar *str, FriBidiStrIndex len); | FRIBIDI_API int fribidi_wcswidth (const FriBidiChar *str, | |||
int fribidi_wcswidth_cjk (const FriBidiChar *str, FriBidiStrIndex len); | FriBidiStrIndex len); | |||
FRIBIDI_API int fribidi_wcswidth_cjk (const FriBidiChar *str, | ||||
FriBidiStrIndex len); | ||||
#ifdef __cplusplus | #ifdef __cplusplus | |||
} | } | |||
#endif | #endif | |||
#endif /* FRIBIDI_UNICODE_H */ | #endif /* FRIBIDI_UNICODE_H */ | |||
End of changes. 4 change blocks. | ||||
6 lines changed or deleted | 10 lines changed or added | |||