mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-03 20:49:27 +00:00
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:
parent
e69627a851
commit
e96a7f7bcd
@ -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);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user