1079 tmpAuxData = glyphStorage.getAuxData(checkMatraPosition,success);
1080 if ( checkMatraPosition >= count || ( (tmpAuxData ^ baseConsonantData) & LE_GLYPH_GROUP_MASK)) {
1081 checkMatraDone = true;
1082 continue;
1083 }
1084 if ( (tmpAuxData & matraMask) &&
1085 (((tmpAuxData & markPositionMask) == aboveBasePosition) ||
1086 ((tmpAuxData & markPositionMask) == postBasePosition))) {
1087 targetPosition = checkMatraPosition;
1088 }
1089 checkMatraPosition++;
1090 }
1091
1092 glyphStorage.moveGlyph(i,targetPosition,repositionedGlyphMask);
1093 }
1094 }
1095 }
1096
1097
1098 le_int32 IndicReordering::v2process(const LEUnicode *chars, le_int32 charCount, le_int32 scriptCode,
1099 LEUnicode *outChars, LEGlyphStorage &glyphStorage)
1100 {
1101 const IndicClassTable *classTable = IndicClassTable::getScriptClassTable(scriptCode);
1102
1103 DynamicProperties dynProps[INDIC_BLOCK_SIZE];
1104 IndicReordering::getDynamicProperties(dynProps,classTable);
1105
1106 IndicReorderingOutput output(outChars, glyphStorage, NULL);
1107 le_int32 i, firstConsonant, baseConsonant, secondConsonant, inv_count = 0, beginSyllable = 0;
1108 //le_bool lastInWord = FALSE;
1109
1110 while (beginSyllable < charCount) {
1111 le_int32 nextSyllable = findSyllable(classTable, chars, beginSyllable, charCount);
1112
1113 output.reset();
1114
1115 // Find the First Consonant
1116 for ( firstConsonant = beginSyllable ; firstConsonant < nextSyllable ; firstConsonant++ ) {
1117 if ( classTable->isConsonant(chars[firstConsonant]) ) {
1118 break;
1119 }
1120 }
1121
|
1079 tmpAuxData = glyphStorage.getAuxData(checkMatraPosition,success);
1080 if ( checkMatraPosition >= count || ( (tmpAuxData ^ baseConsonantData) & LE_GLYPH_GROUP_MASK)) {
1081 checkMatraDone = true;
1082 continue;
1083 }
1084 if ( (tmpAuxData & matraMask) &&
1085 (((tmpAuxData & markPositionMask) == aboveBasePosition) ||
1086 ((tmpAuxData & markPositionMask) == postBasePosition))) {
1087 targetPosition = checkMatraPosition;
1088 }
1089 checkMatraPosition++;
1090 }
1091
1092 glyphStorage.moveGlyph(i,targetPosition,repositionedGlyphMask);
1093 }
1094 }
1095 }
1096
1097
1098 le_int32 IndicReordering::v2process(const LEUnicode *chars, le_int32 charCount, le_int32 scriptCode,
1099 LEUnicode *outChars, LEGlyphStorage &glyphStorage, LEErrorCode& success)
1100 {
1101 const IndicClassTable *classTable = IndicClassTable::getScriptClassTable(scriptCode);
1102 if (classTable == NULL) {
1103 success = LE_MEMORY_ALLOCATION_ERROR;
1104 return 0;
1105 }
1106
1107 DynamicProperties dynProps[INDIC_BLOCK_SIZE];
1108 IndicReordering::getDynamicProperties(dynProps,classTable);
1109
1110 IndicReorderingOutput output(outChars, glyphStorage, NULL);
1111 le_int32 i, firstConsonant, baseConsonant, secondConsonant, inv_count = 0, beginSyllable = 0;
1112 //le_bool lastInWord = FALSE;
1113
1114 while (beginSyllable < charCount) {
1115 le_int32 nextSyllable = findSyllable(classTable, chars, beginSyllable, charCount);
1116
1117 output.reset();
1118
1119 // Find the First Consonant
1120 for ( firstConsonant = beginSyllable ; firstConsonant < nextSyllable ; firstConsonant++ ) {
1121 if ( classTable->isConsonant(chars[firstConsonant]) ) {
1122 break;
1123 }
1124 }
1125
|