ICU 4.4.2 4.4.2
ubidi.h
Go to the documentation of this file.
00001 /*
00002 ******************************************************************************
00003 *
00004 *   Copyright (C) 1999-2010, International Business Machines
00005 *   Corporation and others.  All Rights Reserved.
00006 *
00007 ******************************************************************************
00008 *   file name:  ubidi.h
00009 *   encoding:   US-ASCII
00010 *   tab size:   8 (not used)
00011 *   indentation:4
00012 *
00013 *   created on: 1999jul27
00014 *   created by: Markus W. Scherer, updated by Matitiahu Allouche
00015 */
00016 
00017 #ifndef UBIDI_H
00018 #define UBIDI_H
00019 
00020 #include "unicode/utypes.h"
00021 #include "unicode/uchar.h"
00022 #include "unicode/localpointer.h"
00023 
00288 /*DOCXX_TAG*/
00331 typedef uint8_t UBiDiLevel;
00332 
00357 #define UBIDI_DEFAULT_LTR 0xfe
00358 
00384 #define UBIDI_DEFAULT_RTL 0xff
00385 
00391 #define UBIDI_MAX_EXPLICIT_LEVEL 61
00392 
00397 #define UBIDI_LEVEL_OVERRIDE 0x80
00398 
00412 #define UBIDI_MAP_NOWHERE   (-1)
00413 
00418 enum UBiDiDirection {
00420     UBIDI_LTR,
00422     UBIDI_RTL,
00424     UBIDI_MIXED
00425 };
00426 
00428 typedef enum UBiDiDirection UBiDiDirection;
00429 
00440 struct UBiDi;
00441 
00443 typedef struct UBiDi UBiDi;
00444 
00460 U_STABLE UBiDi * U_EXPORT2
00461 ubidi_open(void);
00462 
00497 U_STABLE UBiDi * U_EXPORT2
00498 ubidi_openSized(int32_t maxLength, int32_t maxRunCount, UErrorCode *pErrorCode);
00499 
00520 U_STABLE void U_EXPORT2
00521 ubidi_close(UBiDi *pBiDi);
00522 
00523 #if U_SHOW_CPLUSPLUS_API
00524 
00525 U_NAMESPACE_BEGIN
00526 
00536 U_DEFINE_LOCAL_OPEN_POINTER(LocalUBiDiPointer, UBiDi, ubidi_close);
00537 
00538 U_NAMESPACE_END
00539 
00540 #endif
00541 
00590 U_STABLE void U_EXPORT2
00591 ubidi_setInverse(UBiDi *pBiDi, UBool isInverse);
00592 
00609 U_STABLE UBool U_EXPORT2
00610 ubidi_isInverse(UBiDi *pBiDi);
00611 
00632 U_STABLE void U_EXPORT2
00633 ubidi_orderParagraphsLTR(UBiDi *pBiDi, UBool orderParagraphsLTR);
00634 
00646 U_STABLE UBool U_EXPORT2
00647 ubidi_isOrderParagraphsLTR(UBiDi *pBiDi);
00648 
00656 typedef enum UBiDiReorderingMode {
00660     UBIDI_REORDER_DEFAULT = 0,
00664     UBIDI_REORDER_NUMBERS_SPECIAL,
00668     UBIDI_REORDER_GROUP_NUMBERS_WITH_R,
00676     UBIDI_REORDER_RUNS_ONLY,
00681     UBIDI_REORDER_INVERSE_NUMBERS_AS_L,
00685     UBIDI_REORDER_INVERSE_LIKE_DIRECT,
00689     UBIDI_REORDER_INVERSE_FOR_NUMBERS_SPECIAL,
00692     UBIDI_REORDER_COUNT
00693 } UBiDiReorderingMode;
00694 
00846 U_STABLE void U_EXPORT2
00847 ubidi_setReorderingMode(UBiDi *pBiDi, UBiDiReorderingMode reorderingMode);
00848 
00857 U_STABLE UBiDiReorderingMode U_EXPORT2
00858 ubidi_getReorderingMode(UBiDi *pBiDi);
00859 
00867 typedef enum UBiDiReorderingOption {
00874     UBIDI_OPTION_DEFAULT = 0,
00875 
00920     UBIDI_OPTION_INSERT_MARKS = 1,
00921 
00938     UBIDI_OPTION_REMOVE_CONTROLS = 2,
00939 
00986     UBIDI_OPTION_STREAMING = 4
00987 } UBiDiReorderingOption;
00988 
01002 U_STABLE void U_EXPORT2
01003 ubidi_setReorderingOptions(UBiDi *pBiDi, uint32_t reorderingOptions);
01004 
01013 U_STABLE uint32_t U_EXPORT2
01014 ubidi_getReorderingOptions(UBiDi *pBiDi);
01015 
01095 U_STABLE void U_EXPORT2
01096 ubidi_setPara(UBiDi *pBiDi, const UChar *text, int32_t length,
01097               UBiDiLevel paraLevel, UBiDiLevel *embeddingLevels,
01098               UErrorCode *pErrorCode);
01099 
01146 U_STABLE void U_EXPORT2
01147 ubidi_setLine(const UBiDi *pParaBiDi,
01148               int32_t start, int32_t limit,
01149               UBiDi *pLineBiDi,
01150               UErrorCode *pErrorCode);
01151 
01166 U_STABLE UBiDiDirection U_EXPORT2
01167 ubidi_getDirection(const UBiDi *pBiDi);
01168 
01180 U_STABLE const UChar * U_EXPORT2
01181 ubidi_getText(const UBiDi *pBiDi);
01182 
01191 U_STABLE int32_t U_EXPORT2
01192 ubidi_getLength(const UBiDi *pBiDi);
01193 
01209 U_STABLE UBiDiLevel U_EXPORT2
01210 ubidi_getParaLevel(const UBiDi *pBiDi);
01211 
01220 U_STABLE int32_t U_EXPORT2
01221 ubidi_countParagraphs(UBiDi *pBiDi);
01222 
01257 U_STABLE int32_t U_EXPORT2
01258 ubidi_getParagraph(const UBiDi *pBiDi, int32_t charIndex, int32_t *pParaStart,
01259                    int32_t *pParaLimit, UBiDiLevel *pParaLevel,
01260                    UErrorCode *pErrorCode);
01261 
01289 U_STABLE void U_EXPORT2
01290 ubidi_getParagraphByIndex(const UBiDi *pBiDi, int32_t paraIndex,
01291                           int32_t *pParaStart, int32_t *pParaLimit,
01292                           UBiDiLevel *pParaLevel, UErrorCode *pErrorCode);
01293 
01309 U_STABLE UBiDiLevel U_EXPORT2
01310 ubidi_getLevelAt(const UBiDi *pBiDi, int32_t charIndex);
01311 
01330 U_STABLE const UBiDiLevel * U_EXPORT2
01331 ubidi_getLevels(UBiDi *pBiDi, UErrorCode *pErrorCode);
01332 
01357 U_STABLE void U_EXPORT2
01358 ubidi_getLogicalRun(const UBiDi *pBiDi, int32_t logicalPosition,
01359                     int32_t *pLogicalLimit, UBiDiLevel *pLevel);
01360 
01376 U_STABLE int32_t U_EXPORT2
01377 ubidi_countRuns(UBiDi *pBiDi, UErrorCode *pErrorCode);
01378 
01434 U_STABLE UBiDiDirection U_EXPORT2
01435 ubidi_getVisualRun(UBiDi *pBiDi, int32_t runIndex,
01436                    int32_t *pLogicalStart, int32_t *pLength);
01437 
01475 U_STABLE int32_t U_EXPORT2
01476 ubidi_getVisualIndex(UBiDi *pBiDi, int32_t logicalIndex, UErrorCode *pErrorCode);
01477 
01510 U_STABLE int32_t U_EXPORT2
01511 ubidi_getLogicalIndex(UBiDi *pBiDi, int32_t visualIndex, UErrorCode *pErrorCode);
01512 
01553 U_STABLE void U_EXPORT2
01554 ubidi_getLogicalMap(UBiDi *pBiDi, int32_t *indexMap, UErrorCode *pErrorCode);
01555 
01589 U_STABLE void U_EXPORT2
01590 ubidi_getVisualMap(UBiDi *pBiDi, int32_t *indexMap, UErrorCode *pErrorCode);
01591 
01612 U_STABLE void U_EXPORT2
01613 ubidi_reorderLogical(const UBiDiLevel *levels, int32_t length, int32_t *indexMap);
01614 
01635 U_STABLE void U_EXPORT2
01636 ubidi_reorderVisual(const UBiDiLevel *levels, int32_t length, int32_t *indexMap);
01637 
01670 U_STABLE void U_EXPORT2
01671 ubidi_invertMap(const int32_t *srcMap, int32_t *destMap, int32_t length);
01672 
01682 #define UBIDI_KEEP_BASE_COMBINING       1
01683 
01692 #define UBIDI_DO_MIRRORING              2
01693 
01706 #define UBIDI_INSERT_LRM_FOR_NUMERIC    4
01707 
01719 #define UBIDI_REMOVE_BIDI_CONTROLS      8
01720 
01735 #define UBIDI_OUTPUT_REVERSE            16
01736 
01775 U_STABLE int32_t U_EXPORT2
01776 ubidi_getProcessedLength(const UBiDi *pBiDi);
01777 
01805 U_STABLE int32_t U_EXPORT2
01806 ubidi_getResultLength(const UBiDi *pBiDi);
01807 
01808 U_CDECL_BEGIN
01815 #define U_BIDI_CLASS_DEFAULT  U_CHAR_DIRECTION_COUNT
01816 
01837 typedef UCharDirection U_CALLCONV
01838 UBiDiClassCallback(const void *context, UChar32 c);
01839 
01840 U_CDECL_END
01841 
01857 U_STABLE UCharDirection U_EXPORT2
01858 ubidi_getCustomizedClass(UBiDi *pBiDi, UChar32 c);
01859 
01887 U_STABLE void U_EXPORT2
01888 ubidi_setClassCallback(UBiDi *pBiDi, UBiDiClassCallback *newFn,
01889                        const void *newContext, UBiDiClassCallback **oldFn,
01890                        const void **oldContext, UErrorCode *pErrorCode);
01891 
01904 U_STABLE void U_EXPORT2
01905 ubidi_getClassCallback(UBiDi *pBiDi, UBiDiClassCallback **fn, const void **context);
01906 
01972 U_STABLE int32_t U_EXPORT2
01973 ubidi_writeReordered(UBiDi *pBiDi,
01974                      UChar *dest, int32_t destSize,
01975                      uint16_t options,
01976                      UErrorCode *pErrorCode);
01977 
02024 U_STABLE int32_t U_EXPORT2
02025 ubidi_writeReverse(const UChar *src, int32_t srcLength,
02026                    UChar *dest, int32_t destSize,
02027                    uint16_t options,
02028                    UErrorCode *pErrorCode);
02029 
02030 /*#define BIDI_SAMPLE_CODE*/
02033 #endif
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Defines