remove dead code prepare for bidi landing

The code removed are #ifdef and turn off right now.
r=bstell sr=erik
This commit is contained in:
ftang%netscape.com 2001-04-03 19:34:56 +00:00
parent e69627a851
commit e96a7f7bcd

View File

@ -45,9 +45,6 @@
#define VERIFY(exp) (exp)
#endif // !_DEBUG
//comment this out so we won't do arabic and hebrew buggy reordering untill
// it get fixed
//#define ARABIC_HEBREW_RENDERING
static NS_DEFINE_IID(kIRenderingContextIID, NS_IRENDERING_CONTEXT_IID);
static NS_DEFINE_IID(kIRenderingContextWinIID, NS_IRENDERING_CONTEXT_WIN_IID);
@ -1442,219 +1439,6 @@ NS_IMETHODIMP nsRenderingContextWin :: FillArc(nscoord aX, nscoord aY, nscoord a
}
#ifdef ARABIC_HEBREW_RENDERING
#define CHAR_IS_HEBREW(c) ((0x0590 <= (c)) && ((c)<= 0x05FF))
#define CHAR_IS_ARABIC(c) ((0x0600 <= (c)) && ((c)<= 0x06FF))
#define HAS_ARABIC_PRESENTATION_FORM_B(font) (FONT_HAS_GLYPH((font)->mMap, 0xFE81))
#define HAS_HEBREW_GLYPH(font) (FONT_HAS_GLYPH((font)->mMap, 0x05D0))
// the following code assume all the aString is from right to left without
// mixing with left to right characters
static void HebrewReordering(const PRUnichar *aString, PRUint32 aLen,
PRUnichar* aBuf, PRUint32 &aBufLen)
{
const PRUnichar* src=aString + aLen - 1;
PRUnichar* dest= aBuf;
while(src>=aString)
*dest++ = *src--;
aBufLen = aLen;
}
//============ Begin Arabic Basic to Presentation Form B Code ============
PRUint8 gArabicMap1[] = {
0x81, 0x83, 0x85, 0x87, 0x89, 0x8D, // 0622-0627
0x8F, 0x93, 0x95, 0x99, 0x9D, 0xA1, 0xA5, 0xA9, // 0628-062F
0xAB, 0xAD, 0xAF, 0xB1, 0xB5, 0xB9, 0xBD, 0xC1, // 0630-0637
0xC5, 0xC9, 0xCD // 0638-063A
};
PRUint8 gArabicMap2[] = {
0xD1, 0xD5, 0xD9, 0xDD, 0xE1, 0xE5, 0xE9, // 0641-0647
0xED, 0xEF, 0xF1 // 0648-064A
};
#define PresentationFormB(c, form) \
(((0x0622<=(c)) && ((c)<=0x063A)) ? \
(0xFE00|(gArabicMap1[(c)-0x0622] + (form))) : \
(((0x0641<=(c)) && ((c)<=0x064A)) ? \
(0xFE00|(gArabicMap2[(c)-0x0641] + (form))) : (c)))
enum {
eIsolated, // or Char N
eFinal, // or Char R
eInitial, // or Char L
eMedial, // or Char M
} eArabicForm;
enum {
eTr = 0, // Transparent
eRJ = 1, // Right-Joining
eLJ = 2, // Left-Joining
eDJ = 3, // Dual-Joining
eNJ = 4,// Non-Joining
eJC = 7, // Joining Causing
eRightJCMask = 2, // bit of Right-Join Causing
eLeftJCMask = 1 // bit of Left-Join Causing
} eArabicJoiningClass;
#define RightJCClass(j) (eRightJCMask&(j))
#define LeftJCClass(j) (eLeftJCMask&(j))
#define DecideForm(jl,j,jr) \
(((eRJ == (j)) && RightJCClass(jr)) ? eFinal \
: \
((eDJ == (j)) ? \
((RightJCClass(jr)) ? \
(((LeftJCClass(jl)) ? eMedial \
: eFinal)) \
: \
(((LeftJCClass(jl)) ? eInitial \
: eIsolated)) \
) : eIsolated)) \
PRInt8 gJoiningClass[] = {
eRJ, eRJ, eRJ, eRJ, eDJ, eRJ, // 0620-0627
eDJ, eRJ, eDJ, eDJ, eDJ, eDJ, eDJ, eRJ, // 0628-062F
eRJ, eRJ, eRJ, eDJ, eDJ, eDJ, eDJ, eDJ, // 0630-0637
eDJ, eDJ, eDJ, eNJ, eNJ, eNJ, eNJ, eNJ, // 0638-063F
eJC, eDJ, eDJ, eDJ, eDJ, eDJ, eDJ, eDJ, // 0640-0647
eRJ, eRJ, eDJ, eTr, eTr, eTr, eTr, eTr, // 0648-064F
eTr, eTr, eTr // 0650-0652
};
#define GetJoiningClass(c) \
(((0x0622 <= (c)) && ((c) <= 0x0652)) ? \
(gJoiningClass[(c) - 0x0622]) : \
((0x200D == (c)) ? eJC : eTr))
PRUint16 gArabicLigatureMap[] =
{
0x82DF, // 0xFE82 0xFEDF -> 0xFEF5
0x82E0, // 0xFE82 0xFEE0 -> 0xFEF6
0x84DF, // 0xFE84 0xFEDF -> 0xFEF7
0x84E0, // 0xFE84 0xFEE0 -> 0xFEF8
0x88DF, // 0xFE88 0xFEDF -> 0xFEF9
0x88E0, // 0xFE88 0xFEE0 -> 0xFEFA
0x8EDF, // 0xFE8E 0xFEDF -> 0xFEFB
0x8EE0 // 0xFE8E 0xFEE0 -> 0xFEFC
};
static void ArabicShaping(const PRUnichar* aString, PRUint32 aLen,
PRUnichar* aBuf, PRUint32 &aBufLen, PRUint32* map)
{
const PRUnichar* src = aString+aLen-1;
const PRUnichar* p;
PRUnichar* dest = aBuf;
PRUnichar formB;
PRInt8 leftJ, thisJ, rightJ;
PRInt8 leftNoTrJ, rightNoTrJ;
thisJ = eNJ;
rightJ = GetJoiningClass(*(src)) ;
while(src>aString) {
leftJ = thisJ;
if(eTr != thisJ)
leftNoTrJ = thisJ;
thisJ = rightJ;
rightJ = rightNoTrJ = GetJoiningClass(*(src-1)) ;
for(p=src-2; (eTr == rightNoTrJ) && (p >= src); p--)
rightNoTrJ = GetJoiningClass(*(p)) ;
formB = PresentationFormB(*src, DecideForm(leftNoTrJ, thisJ, rightNoTrJ));
if(FONT_HAS_GLYPH(map,formB))
*dest++ = formB;
else
*dest++ = PresentationFormB(*src, eIsolated);
//printf("%x %d %d %d %x\n" ,*src,leftJ, thisJ, rightJ,
//PresentationFormB(*src, DecideForm(leftJ, thisJ, rightJ)));
src--;
}
if(eTr != thisJ)
leftNoTrJ = thisJ;
formB = PresentationFormB(*src, DecideForm(leftNoTrJ, rightJ, eNJ));
if(FONT_HAS_GLYPH(map,formB))
*dest++ = formB;
else
*dest++ = PresentationFormB(*src, eIsolated);
//printf("%x %d %d %d %x\n" ,*src, thisJ, rightJ, eNJ,
//PresentationFormB(*src, DecideForm( thisJ, rightJ, eNJ)));
src--;
PRUnichar *lSrc = aBuf;
PRUnichar *lDest = aBuf;
while(lSrc < (dest-1))
{
PRUnichar next = *(lSrc+1);
if(((0xFEDF == next) || (0xFEE0 == next)) &&
(0xFE80 == (0xFFF1 & *lSrc)))
{
PRBool done = PR_FALSE;
PRUint16 key = ((*lSrc) << 8) | ( 0x00FF & next);
PRUint16 i;
for(i=0;i<8;i++)
{
if(key == gArabicLigatureMap[i])
{
done = PR_TRUE;
*lDest++ = 0xFEF5 + i;
lSrc+=2;
break;
}
}
if(! done)
*lDest++ = *lSrc++;
} else {
*lDest++ = *lSrc++;
}
}
if(lSrc < dest)
*lDest++ = *lSrc++;
aBufLen = lDest - aBuf;
#if 0
printf("[");
for(PRUint32 k=0;k<aBufLen;k++)
printf("%x ", aBuf[k]);
printf("]\n");
#endif
}
//============ End of Arabic Basic to Presentation Form B Code ============
static PRBool NeedComplexScriptHandling(const PRUnichar *aString, PRUint32 aLen,
PRBool bFontSupportHebrew, PRBool* oHebrew,
PRBool bFontSupportArabic, PRBool* oArabic)
{
PRUint32 i;
*oHebrew = *oArabic = PR_FALSE;
if(bFontSupportArabic && bFontSupportHebrew)
{
for(i=0;i<aLen;i++)
{
if(CHAR_IS_HEBREW(aString[i])) {
*oHebrew=PR_TRUE;
break;
} else if(CHAR_IS_ARABIC(aString[i])) {
*oArabic=PR_TRUE;
break;
}
}
} else if(bFontSupportHebrew) {
for(i=0;i<aLen;i++)
{
if(CHAR_IS_HEBREW(aString[i])) {
*oHebrew=PR_TRUE;
break;
}
}
} else if(bFontSupportArabic) {
for(i=0;i<aLen;i++)
{
if(CHAR_IS_ARABIC(aString[i])) {
*oArabic=PR_TRUE;
break;
}
}
}
return *oArabic || *oHebrew;
}
#endif // ARABIC_HEBREW_RENDERING
#ifdef FIX_FOR_BUG_6585
// This function will substitute non-ascii 7-bit chars so that
@ -1934,10 +1718,6 @@ NS_IMETHODIMP nsRenderingContextWin :: GetWidth(const PRUnichar *aString,
SetupFontAndColor();
HFONT selectedFont = mCurrFont;
#ifdef ARABIC_HEBREW_RENDERING
PRUnichar buf[8192];
PRUint32 len;
#endif // ARABIC_HEBREW_RENDERING
LONG width = 0;
PRUint32 start = 0;
@ -1962,26 +1742,7 @@ FoundFont:
::SelectObject(mDC, prevFont->mFont);
selectedFont = prevFont->mFont;
}
#ifdef ARABIC_HEBREW_RENDERING
PRBool bArabic=PR_FALSE;
PRBool bHebrew=PR_FALSE;
if(NeedComplexScriptHandling(&pstr[start],i-start,
HAS_HEBREW_GLYPH(prevFont), &bHebrew,
HAS_ARABIC_PRESENTATION_FORM_B(prevFont), &bArabic ) )
{
len = 8192;
if(bHebrew) {
HebrewReordering(&pstr[start], i-start, buf, len);
} else if (bArabic) {
ArabicShaping(&pstr[start], i-start, buf, len, prevFont->mMap);
}
width += prevFont->GetWidth(mDC, buf, len);
}
else
#endif // ARABIC_HEBREW_RENDERING
{
width += prevFont->GetWidth(mDC, &pstr[start], i - start);
}
width += prevFont->GetWidth(mDC, &pstr[start], i - start);
prevFont = currFont;
start = i;
}
@ -1997,26 +1758,7 @@ FoundFont:
::SelectObject(mDC, prevFont->mFont);
selectedFont = prevFont->mFont;
}
#ifdef ARABIC_HEBREW_RENDERING
PRBool bArabic=PR_FALSE;
PRBool bHebrew=PR_FALSE;
if(NeedComplexScriptHandling(&pstr[start],i-start,
HAS_HEBREW_GLYPH(prevFont), &bHebrew,
HAS_ARABIC_PRESENTATION_FORM_B(prevFont), &bArabic ) )
{
len = 8192;
if(bHebrew) {
HebrewReordering(&pstr[start], i-start, buf, len);
} else if (bArabic) {
ArabicShaping(&pstr[start], i-start, buf, len, prevFont->mMap);
}
width += prevFont->GetWidth(mDC, buf, len);
}
else
#endif // ARABIC_HEBREW_RENDERING
{
width += prevFont->GetWidth(mDC, &pstr[start], i - start);
}
width += prevFont->GetWidth(mDC, &pstr[start], i - start);
}
aWidth = NSToCoordRound(float(width) * mP2T);
@ -2403,10 +2145,6 @@ NS_IMETHODIMP nsRenderingContextWin :: DrawString(const PRUnichar *aString, PRUi
SetupFontAndColor();
HFONT selectedFont = mCurrFont;
#ifdef ARABIC_HEBREW_RENDERING
PRUnichar buf[8192];
PRUint32 len;
#endif // ARABIC_HEBREW_RENDERING
PRUint32 start = 0;
for (PRUint32 i = 0; i < aLength; i++) {
@ -2449,24 +2187,6 @@ FoundFont:
}
}
else {
#ifdef ARABIC_HEBREW_RENDERING
PRBool bArabic=PR_FALSE;
PRBool bHebrew=PR_FALSE;
if(NeedComplexScriptHandling(&pstr[start],i-start,
HAS_HEBREW_GLYPH(prevFont), &bHebrew,
HAS_ARABIC_PRESENTATION_FORM_B(prevFont), &bArabic ) )
{
len = 8192;
if(bHebrew) {
HebrewReordering(&pstr[start], i-start, buf, len);
} else if (bArabic) {
ArabicShaping(&pstr[start], i-start, buf, len, prevFont->mMap);
}
prevFont->DrawString(mDC, x, y, buf, len);
x += prevFont->GetWidth(mDC, buf, len);
}
else
#endif // ARABIC_HEBREW_RENDERING
{
prevFont->DrawString(mDC, x, y, &pstr[start], i - start);
x += prevFont->GetWidth(mDC, &pstr[start], i - start);
@ -2507,23 +2227,6 @@ FoundFont:
}
}
else {
#ifdef ARABIC_HEBREW_RENDERING
PRBool bArabic=PR_FALSE;
PRBool bHebrew=PR_FALSE;
if(NeedComplexScriptHandling(&pstr[start],i-start,
HAS_HEBREW_GLYPH(prevFont), &bHebrew,
HAS_ARABIC_PRESENTATION_FORM_B(prevFont), &bArabic ) )
{
len = 8192;
if(bHebrew) {
HebrewReordering(&pstr[start], i-start, buf, len);
} else if (bArabic) {
ArabicShaping(&pstr[start], i-start, buf, len, prevFont->mMap);
}
prevFont->DrawString(mDC, x, y, buf, len);
}
else
#endif // ARABIC_HEBREW_RENDERING
{
prevFont->DrawString(mDC, x, y, &pstr[start], i - start);
}