diff options
Diffstat (limited to 'Build/source/libs/icu/icu-xetex/layoutex/playout.cpp')
-rw-r--r-- | Build/source/libs/icu/icu-xetex/layoutex/playout.cpp | 330 |
1 files changed, 330 insertions, 0 deletions
diff --git a/Build/source/libs/icu/icu-xetex/layoutex/playout.cpp b/Build/source/libs/icu/icu-xetex/layoutex/playout.cpp new file mode 100644 index 00000000000..f1c167ea3e6 --- /dev/null +++ b/Build/source/libs/icu/icu-xetex/layoutex/playout.cpp @@ -0,0 +1,330 @@ +/* + * + * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved + * + */ + +/* + * paragraphLayout doesn't make much sense without + * BreakIterator... + */ +#include "layout/LETypes.h" +#include "layout/loengine.h" +#include "layout/plruns.h" +#include "layout/playout.h" + +#include "unicode/locid.h" + +#include "layout/LayoutEngine.h" +#include "layout/ParagraphLayout.h" + +#if ! UCONFIG_NO_BREAK_ITERATION + +U_NAMESPACE_USE + +U_CAPI pl_paragraph * U_EXPORT2 +pl_create(const LEUnicode chars[], + le_int32 count, + const pl_fontRuns *fontRuns, + const pl_valueRuns *levelRuns, + const pl_valueRuns *scriptRuns, + const pl_localeRuns *localeRuns, + UBiDiLevel paragraphLevel, + le_bool vertical, + LEErrorCode *status) +{ + ParagraphLayout *pl = new ParagraphLayout(chars, count, (const FontRuns *) fontRuns, + (const ValueRuns *) levelRuns, (const ValueRuns *) scriptRuns, (const LocaleRuns *) localeRuns, + paragraphLevel, vertical, *status); + + return (pl_paragraph *) pl; +} + +U_CAPI void U_EXPORT2 +pl_close(pl_paragraph *paragraph) +{ + ParagraphLayout *pl = (ParagraphLayout *) paragraph; + + delete pl; +} + +U_CAPI le_bool U_EXPORT2 +pl_isComplex(const LEUnicode chars[], + le_int32 count) +{ + return ParagraphLayout::isComplex(chars, count); +} + +U_CAPI UBiDiLevel U_EXPORT2 +pl_getParagraphLevel(pl_paragraph *paragraph) +{ + ParagraphLayout *pl = (ParagraphLayout *) paragraph; + + if (pl == NULL) { + return 0; + } + + return pl->getParagraphLevel(); +} + +U_CAPI UBiDiDirection U_EXPORT2 +pl_getTextDirection(pl_paragraph *paragraph) +{ + ParagraphLayout *pl = (ParagraphLayout *) paragraph; + + if (pl == NULL) { + return UBIDI_LTR; + } + + return pl->getTextDirection(); +} + +U_CAPI le_int32 U_EXPORT2 +pl_getAscent(const pl_paragraph *paragraph) +{ + ParagraphLayout *pl = (ParagraphLayout *) paragraph; + + if (pl == NULL) { + return 0; + } + + return pl->getAscent(); +} + +U_CAPI le_int32 U_EXPORT2 +pl_getDescent(const pl_paragraph *paragraph) +{ + ParagraphLayout *pl = (ParagraphLayout *) paragraph; + + if (pl == NULL) { + return 0; + } + + return pl->getDescent(); +} + +U_CAPI le_int32 U_EXPORT2 +pl_getLeading(const pl_paragraph *paragraph) +{ + ParagraphLayout *pl = (ParagraphLayout *) paragraph; + + if (pl == NULL) { + return 0; + } + + return pl->getLeading(); +} + +U_CAPI void U_EXPORT2 +pl_reflow(pl_paragraph *paragraph) +{ + ParagraphLayout *pl = (ParagraphLayout *) paragraph; + + if (pl == NULL) { + return; + } + + return pl->reflow(); +} + +U_CAPI pl_line * U_EXPORT2 +pl_nextLine(pl_paragraph *paragraph, float width) +{ + ParagraphLayout *pl = (ParagraphLayout *) paragraph; + + if (pl == NULL) { + return NULL; + } + + return (pl_line *) pl->nextLine(width); +} + +U_CAPI void U_EXPORT2 +pl_closeLine(pl_line *line) +{ + ParagraphLayout::Line *ll = (ParagraphLayout::Line *) line; + + delete ll; +} + +U_CAPI le_int32 U_EXPORT2 +pl_countLineRuns(const pl_line *line) +{ + ParagraphLayout::Line *ll = (ParagraphLayout::Line *) line; + + if (ll == NULL) { + return 0; + } + + return ll->countRuns(); +} + +U_CAPI le_int32 U_EXPORT2 +pl_getLineAscent(const pl_line *line) +{ + ParagraphLayout::Line *ll = (ParagraphLayout::Line *) line; + + if (ll == NULL) { + return 0; + } + + return ll->getAscent(); +} + +U_CAPI le_int32 U_EXPORT2 +pl_getLineDescent(const pl_line *line) +{ + ParagraphLayout::Line *ll = (ParagraphLayout::Line *) line; + + if (ll == NULL) { + return 0; + } + + return ll->getDescent(); +} + +U_CAPI le_int32 U_EXPORT2 +pl_getLineLeading(const pl_line *line) +{ + ParagraphLayout::Line *ll = (ParagraphLayout::Line *) line; + + if (ll == NULL) { + return 0; + } + + return ll->getLeading(); +} + +U_CAPI le_int32 U_EXPORT2 +pl_getLineWidth(const pl_line *line) +{ + ParagraphLayout::Line *ll = (ParagraphLayout::Line *) line; + + if (ll == NULL) { + return 0; + } + + return ll->getWidth(); +} + +U_CAPI const pl_visualRun * U_EXPORT2 +pl_getLineVisualRun(const pl_line *line, le_int32 runIndex) +{ + ParagraphLayout::Line *ll = (ParagraphLayout::Line *) line; + + if (ll == NULL) { + return 0; + } + + return (pl_visualRun *) ll->getVisualRun(runIndex); +} + +U_CAPI const le_font * U_EXPORT2 +pl_getVisualRunFont(const pl_visualRun *run) +{ + ParagraphLayout::VisualRun *vr = (ParagraphLayout::VisualRun *) run; + + if (vr == NULL) { + return NULL; + } + + return (const le_font *) vr->getFont(); +} + +U_CAPI UBiDiDirection U_EXPORT2 +pl_getVisualRunDirection(const pl_visualRun *run) +{ + ParagraphLayout::VisualRun *vr = (ParagraphLayout::VisualRun *) run; + + if (vr == NULL) { + return UBIDI_LTR; + } + + return vr->getDirection(); +} + +U_CAPI le_int32 U_EXPORT2 +pl_getVisualRunGlyphCount(const pl_visualRun *run) +{ + ParagraphLayout::VisualRun *vr = (ParagraphLayout::VisualRun *) run; + + if (vr == NULL) { + return -1; + } + + return vr->getGlyphCount(); +} + +U_CAPI const LEGlyphID * U_EXPORT2 +pl_getVisualRunGlyphs(const pl_visualRun *run) +{ + ParagraphLayout::VisualRun *vr = (ParagraphLayout::VisualRun *) run; + + if (vr == NULL) { + return NULL; + } + + return vr->getGlyphs(); +} + +U_CAPI const float * U_EXPORT2 +pl_getVisualRunPositions(const pl_visualRun *run) +{ + ParagraphLayout::VisualRun *vr = (ParagraphLayout::VisualRun *) run; + + if (vr == NULL) { + return NULL; + } + + return vr->getPositions(); +} + +U_CAPI const le_int32 * U_EXPORT2 +pl_getVisualRunGlyphToCharMap(const pl_visualRun *run) +{ + ParagraphLayout::VisualRun *vr = (ParagraphLayout::VisualRun *) run; + + if (vr == NULL) { + return NULL; + } + + return vr->getGlyphToCharMap(); +} + +U_CAPI le_int32 U_EXPORT2 +pl_getVisualRunAscent(const pl_visualRun *run) +{ + ParagraphLayout::VisualRun *vr = (ParagraphLayout::VisualRun *) run; + + if (vr == NULL) { + return 0; + } + + return vr->getAscent(); +} + +U_CAPI le_int32 U_EXPORT2 +pl_getVisualRunDescent(const pl_visualRun *run) +{ + ParagraphLayout::VisualRun *vr = (ParagraphLayout::VisualRun *) run; + + if (vr == NULL) { + return 0; + } + + return vr->getDescent(); +} + +U_CAPI le_int32 U_EXPORT2 +pl_getVisualRunLeading(const pl_visualRun *run) +{ + ParagraphLayout::VisualRun *vr = (ParagraphLayout::VisualRun *) run; + + if (vr == NULL) { + return 0; + } + + return vr->getLeading(); +} + +#endif |