ubidi.h

Go to the documentation of this file.
00001 /*
00002 ******************************************************************************
00003 *
00004 *   Copyright (C) 1999-2004, 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
00015 */
00016 
00017 #ifndef UBIDI_H
00018 #define UBIDI_H
00019 
00020 #include "unicode/utypes.h"
00021 #include "unicode/uchar.h"
00022 
00023 /*
00024  * javadoc-style comments are intended to be transformed into HTML
00025  * using DOC++ - see
00026  * http://www.zib.de/Visual/software/doc++/index.html .
00027  *
00028  * The HTML documentation is created with
00029  *  doc++ -H ubidi.h
00030  *
00031  * The following #define trick allows us to do it all in one file
00032  * and still be able to compile it.
00033  */
00034 /*#define DOCXX_TAG*/
00035 /*#define BIDI_SAMPLE_CODE*/
00036 
00301 /*DOCXX_TAG*/
00344 typedef uint8_t UBiDiLevel;
00345 
00350 #define UBIDI_DEFAULT_LTR 0xfe
00351 
00356 #define UBIDI_DEFAULT_RTL 0xff
00357 
00363 #define UBIDI_MAX_EXPLICIT_LEVEL 61
00364 
00369 #define UBIDI_LEVEL_OVERRIDE 0x80
00370 
00375 enum UBiDiDirection {
00377     UBIDI_LTR,
00379     UBIDI_RTL,
00381     UBIDI_MIXED
00382 };
00383 
00385 typedef enum UBiDiDirection UBiDiDirection;
00386 
00397 struct UBiDi;
00398 
00400 typedef struct UBiDi UBiDi;
00401 
00416 U_STABLE UBiDi * U_EXPORT2
00417 ubidi_open(void);
00418 
00454 U_STABLE UBiDi * U_EXPORT2
00455 ubidi_openSized(int32_t maxLength, int32_t maxRunCount, UErrorCode *pErrorCode);
00456 
00477 U_STABLE void U_EXPORT2
00478 ubidi_close(UBiDi *pBiDi);
00479 
00516 U_STABLE void U_EXPORT2
00517 ubidi_setInverse(UBiDi *pBiDi, UBool isInverse);
00518 
00528 U_STABLE UBool U_EXPORT2
00529 ubidi_isInverse(UBiDi *pBiDi);
00530 
00602 U_STABLE void U_EXPORT2
00603 ubidi_setPara(UBiDi *pBiDi, const UChar *text, int32_t length,
00604               UBiDiLevel paraLevel, UBiDiLevel *embeddingLevels,
00605               UErrorCode *pErrorCode);
00606 
00650 U_STABLE void U_EXPORT2
00651 ubidi_setLine(const UBiDi *pParaBiDi,
00652               int32_t start, int32_t limit,
00653               UBiDi *pLineBiDi,
00654               UErrorCode *pErrorCode);
00655 
00668 U_STABLE UBiDiDirection U_EXPORT2
00669 ubidi_getDirection(const UBiDi *pBiDi);
00670 
00682 U_STABLE const UChar * U_EXPORT2
00683 ubidi_getText(const UBiDi *pBiDi);
00684 
00693 U_STABLE int32_t U_EXPORT2
00694 ubidi_getLength(const UBiDi *pBiDi);
00695 
00706 U_STABLE UBiDiLevel U_EXPORT2
00707 ubidi_getParaLevel(const UBiDi *pBiDi);
00708 
00721 U_STABLE UBiDiLevel U_EXPORT2
00722 ubidi_getLevelAt(const UBiDi *pBiDi, int32_t charIndex);
00723 
00741 U_STABLE const UBiDiLevel * U_EXPORT2
00742 ubidi_getLevels(UBiDi *pBiDi, UErrorCode *pErrorCode);
00743 
00766 U_STABLE void U_EXPORT2
00767 ubidi_getLogicalRun(const UBiDi *pBiDi, int32_t logicalStart,
00768                     int32_t *pLogicalLimit, UBiDiLevel *pLevel);
00769 
00786 U_STABLE int32_t U_EXPORT2
00787 ubidi_countRuns(UBiDi *pBiDi, UErrorCode *pErrorCode);
00788 
00840 U_STABLE UBiDiDirection U_EXPORT2
00841 ubidi_getVisualRun(UBiDi *pBiDi, int32_t runIndex,
00842                    int32_t *pLogicalStart, int32_t *pLength);
00843 
00867 U_STABLE int32_t U_EXPORT2
00868 ubidi_getVisualIndex(UBiDi *pBiDi, int32_t logicalIndex, UErrorCode *pErrorCode);
00869 
00891 U_STABLE int32_t U_EXPORT2
00892 ubidi_getLogicalIndex(UBiDi *pBiDi, int32_t visualIndex, UErrorCode *pErrorCode);
00893 
00912 U_STABLE void U_EXPORT2
00913 ubidi_getLogicalMap(UBiDi *pBiDi, int32_t *indexMap, UErrorCode *pErrorCode);
00914 
00933 U_STABLE void U_EXPORT2
00934 ubidi_getVisualMap(UBiDi *pBiDi, int32_t *indexMap, UErrorCode *pErrorCode);
00935 
00956 U_STABLE void U_EXPORT2
00957 ubidi_reorderLogical(const UBiDiLevel *levels, int32_t length, int32_t *indexMap);
00958 
00979 U_STABLE void U_EXPORT2
00980 ubidi_reorderVisual(const UBiDiLevel *levels, int32_t length, int32_t *indexMap);
00981 
00996 U_STABLE void U_EXPORT2
00997 ubidi_invertMap(const int32_t *srcMap, int32_t *destMap, int32_t length);
00998 
01008 #define UBIDI_KEEP_BASE_COMBINING       1
01009 
01018 #define UBIDI_DO_MIRRORING              2
01019 
01029 #define UBIDI_INSERT_LRM_FOR_NUMERIC    4
01030 
01039 #define UBIDI_REMOVE_BIDI_CONTROLS      8
01040 
01055 #define UBIDI_OUTPUT_REVERSE            16
01056 
01126 U_STABLE int32_t U_EXPORT2
01127 ubidi_writeReordered(UBiDi *pBiDi,
01128                      UChar *dest, int32_t destSize,
01129                      uint16_t options,
01130                      UErrorCode *pErrorCode);
01131 
01179 U_STABLE int32_t U_EXPORT2
01180 ubidi_writeReverse(const UChar *src, int32_t srcLength,
01181                    UChar *dest, int32_t destSize,
01182                    uint16_t options,
01183                    UErrorCode *pErrorCode);
01184 
01185 /*#define BIDI_SAMPLE_CODE*/
01188 #endif

Generated on Tue Nov 16 10:03:06 2004 for ICU 3.2 by  doxygen 1.3.9.1