- Main Page
- Related Pages
- Modules
- Data Structures
- Files

- File List
- Globals

# 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