summaryrefslogtreecommitdiff
path: root/Build/source/libs/icu/icu-4.6/layout/loengine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/icu/icu-4.6/layout/loengine.cpp')
-rw-r--r--Build/source/libs/icu/icu-4.6/layout/loengine.cpp163
1 files changed, 163 insertions, 0 deletions
diff --git a/Build/source/libs/icu/icu-4.6/layout/loengine.cpp b/Build/source/libs/icu/icu-4.6/layout/loengine.cpp
new file mode 100644
index 00000000000..3718b9f6f8a
--- /dev/null
+++ b/Build/source/libs/icu/icu-4.6/layout/loengine.cpp
@@ -0,0 +1,163 @@
+/*
+ *
+ * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved
+ *
+ */
+
+#include "LETypes.h"
+#include "loengine.h"
+#include "LayoutEngine.h"
+
+/**
+ * \file
+ * \brief C API for complex text layout.
+ */
+
+U_NAMESPACE_USE
+
+U_CAPI le_engine * U_EXPORT2
+le_create(const le_font *font,
+ le_int32 scriptCode,
+ le_int32 languageCode,
+ le_int32 typo_flags,
+ LEErrorCode *success)
+{
+ LEFontInstance *fontInstance = (LEFontInstance *) font;
+
+ return (le_engine *) LayoutEngine::layoutEngineFactory(fontInstance, scriptCode, languageCode, typo_flags, *success);
+}
+
+U_CAPI void U_EXPORT2
+le_close(le_engine *engine)
+{
+ LayoutEngine *le = (LayoutEngine *) engine;
+
+ delete le;
+}
+
+U_CAPI le_int32 U_EXPORT2
+le_layoutChars(le_engine *engine,
+ const LEUnicode chars[],
+ le_int32 offset,
+ le_int32 count,
+ le_int32 max,
+ le_bool rightToLeft,
+ float x,
+ float y,
+ LEErrorCode *success)
+{
+ LayoutEngine *le = (LayoutEngine *) engine;
+
+ if (le == NULL) {
+ *success = LE_ILLEGAL_ARGUMENT_ERROR;
+ return -1;
+ }
+
+ return le->layoutChars(chars, offset, count, max, rightToLeft, x, y, *success);
+}
+
+U_CAPI le_int32 U_EXPORT2
+le_getGlyphCount(le_engine *engine,
+ LEErrorCode *success)
+{
+ LayoutEngine *le = (LayoutEngine *) engine;
+
+ if (le == NULL) {
+ *success = LE_ILLEGAL_ARGUMENT_ERROR;
+ return -1;
+ }
+
+ return le->getGlyphCount();
+}
+
+U_CAPI void U_EXPORT2
+le_getGlyphs(le_engine *engine,
+ LEGlyphID glyphs[],
+ LEErrorCode *success)
+{
+ LayoutEngine *le = (LayoutEngine *) engine;
+
+ if (le == NULL) {
+ *success = LE_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+
+ le->getGlyphs(glyphs, *success);
+}
+
+U_CAPI void U_EXPORT2
+le_getCharIndices(le_engine *engine,
+ le_int32 charIndices[],
+ LEErrorCode *success)
+{
+ LayoutEngine *le = (LayoutEngine *) engine;
+
+ if (le == NULL) {
+ *success = LE_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+
+ le->getCharIndices(charIndices, *success);
+}
+
+U_CAPI void U_EXPORT2
+le_getCharIndicesWithBase(le_engine *engine,
+ le_int32 charIndices[],
+ le_int32 indexBase,
+ LEErrorCode *success)
+{
+ LayoutEngine *le = (LayoutEngine *) engine;
+
+ if (le == NULL) {
+ *success = LE_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+
+ le->getCharIndices(charIndices, indexBase, *success);
+}
+
+U_CAPI void U_EXPORT2
+le_getGlyphPositions(le_engine *engine,
+ float positions[],
+ LEErrorCode *success)
+{
+ LayoutEngine *le = (LayoutEngine *) engine;
+
+ if (le == NULL) {
+ *success = LE_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+
+ le->getGlyphPositions(positions, *success);
+}
+
+U_CAPI void U_EXPORT2
+le_getGlyphPosition(le_engine *engine,
+ le_int32 glyphIndex,
+ float *x,
+ float *y,
+ LEErrorCode *success)
+{
+ LayoutEngine *le = (LayoutEngine *) engine;
+
+ if (le == NULL) {
+ *success = LE_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+
+ le->getGlyphPosition(glyphIndex, *x, *y, *success);
+}
+
+U_CAPI void U_EXPORT2
+le_reset(le_engine *engine,
+ LEErrorCode *success)
+{
+ LayoutEngine *le = (LayoutEngine *) engine;
+
+ if (le == NULL) {
+ *success = LE_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+
+ le->reset();
+}