PRUnichar HandleNumberInChar(PRUnichar aChar, PRBool aPrevCharArabic, PRUint32 aNumFlag) { // IBMBIDI_NUMERAL_NOMINAL * // IBMBIDI_NUMERAL_REGULAR // IBMBIDI_NUMERAL_HINDICONTEXT // IBMBIDI_NUMERAL_ARABIC // IBMBIDI_NUMERAL_HINDI switch (aNumFlag) { case IBMBIDI_NUMERAL_HINDI: return NUM_TO_HINDI(aChar); case IBMBIDI_NUMERAL_ARABIC: return NUM_TO_ARABIC(aChar); case IBMBIDI_NUMERAL_PERSIAN: return NUM_TO_PERSIAN(aChar); case IBMBIDI_NUMERAL_REGULAR: case IBMBIDI_NUMERAL_HINDICONTEXT: case IBMBIDI_NUMERAL_PERSIANCONTEXT: // for clipboard handling //XXX do we really want to convert numerals when copying text? if (aPrevCharArabic) { if (aNumFlag == IBMBIDI_NUMERAL_PERSIANCONTEXT) return NUM_TO_PERSIAN(aChar); else return NUM_TO_HINDI(aChar); } else return NUM_TO_ARABIC(aChar); case IBMBIDI_NUMERAL_NOMINAL: default: return aChar; } }
nsresult HandleNumbers(PRUnichar* aBuffer, PRUint32 aSize, PRUint32 aNumFlag) { PRUint32 i; // IBMBIDI_NUMERAL_NOMINAL * // IBMBIDI_NUMERAL_REGULAR // IBMBIDI_NUMERAL_HINDICONTEXT // IBMBIDI_NUMERAL_ARABIC // IBMBIDI_NUMERAL_HINDI switch (aNumFlag) { case IBMBIDI_NUMERAL_HINDI: for (i=0;i<aSize;i++) aBuffer[i] = NUM_TO_HINDI(aBuffer[i]); break; case IBMBIDI_NUMERAL_ARABIC: for (i=0;i<aSize;i++) aBuffer[i] = NUM_TO_ARABIC(aBuffer[i]); break; case IBMBIDI_NUMERAL_REGULAR: case IBMBIDI_NUMERAL_HINDICONTEXT: // for clipboard handling //XXX do we really want to convert numerals when copying text? for (i=1;i<aSize;i++) { if (IS_ARABIC_CHAR(aBuffer[i-1])) aBuffer[i] = NUM_TO_HINDI(aBuffer[i]); else aBuffer[i] = NUM_TO_ARABIC(aBuffer[i]); } case IBMBIDI_NUMERAL_NOMINAL: default: break; } return NS_OK; }