From 12d319fb57b425fe2ffc3de307b8cd944f6b6f64 Mon Sep 17 00:00:00 2001 From: "smontagu%netscape.com" Date: Fri, 22 Nov 2002 23:49:29 +0000 Subject: [PATCH] Make Bidi symmetric swapping handle characters outside BMP. Bug 122800, r=mkaply, sr=darin git-svn-id: svn://10.0.0.236/trunk@134348 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/layout/base/nsBidi.cpp | 4 ++-- mozilla/layout/base/nsBidi.h | 4 ++-- mozilla/layout/base/public/nsBidi.h | 4 ++-- mozilla/layout/base/src/nsBidi.cpp | 4 ++-- mozilla/layout/base/src/symmtable.h | 4 ++-- mozilla/layout/base/symmtable.h | 4 ++-- mozilla/layout/tools/gensymmtable.pl | 4 ++-- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/mozilla/layout/base/nsBidi.cpp b/mozilla/layout/base/nsBidi.cpp index 0d0ae4a1a68..32ff84918ed 100644 --- a/mozilla/layout/base/nsBidi.cpp +++ b/mozilla/layout/base/nsBidi.cpp @@ -2256,7 +2256,7 @@ PRInt32 nsBidi::doWriteReverse(const PRUnichar *src, PRInt32 srcLength, j=srcLength; if(options&NSBIDI_DO_MIRRORING) { /* mirror only the base character */ - c = SymmSwap((PRUnichar)c); + c = SymmSwap(c); PRInt32 k=0; UTF_APPEND_CHAR_UNSAFE(dest, k, c); @@ -2335,7 +2335,7 @@ nsCharType nsBidi::GetCharType(PRUnichar aChar) return oResult; } -PRUnichar nsBidi::SymmSwap(PRUnichar aChar) +PRUint32 nsBidi::SymmSwap(PRUint32 aChar) { return Mirrored(aChar); } diff --git a/mozilla/layout/base/nsBidi.h b/mozilla/layout/base/nsBidi.h index 2bd4b16798d..16dbd930230 100644 --- a/mozilla/layout/base/nsBidi.h +++ b/mozilla/layout/base/nsBidi.h @@ -1036,9 +1036,9 @@ private: nsCharType GetCharType(PRUnichar aChar); /** - * Give a Unichar, return the symmetric equivalent + * Give a Unicode character, return the symmetric equivalent */ - PRUnichar SymmSwap(PRUnichar aChar); + PRUint32 SymmSwap(PRUint32 aChar); PRInt32 doWriteReverse(const PRUnichar *src, PRInt32 srcLength, PRUnichar *dest, PRUint16 options); diff --git a/mozilla/layout/base/public/nsBidi.h b/mozilla/layout/base/public/nsBidi.h index 2bd4b16798d..16dbd930230 100644 --- a/mozilla/layout/base/public/nsBidi.h +++ b/mozilla/layout/base/public/nsBidi.h @@ -1036,9 +1036,9 @@ private: nsCharType GetCharType(PRUnichar aChar); /** - * Give a Unichar, return the symmetric equivalent + * Give a Unicode character, return the symmetric equivalent */ - PRUnichar SymmSwap(PRUnichar aChar); + PRUint32 SymmSwap(PRUint32 aChar); PRInt32 doWriteReverse(const PRUnichar *src, PRInt32 srcLength, PRUnichar *dest, PRUint16 options); diff --git a/mozilla/layout/base/src/nsBidi.cpp b/mozilla/layout/base/src/nsBidi.cpp index 0d0ae4a1a68..32ff84918ed 100644 --- a/mozilla/layout/base/src/nsBidi.cpp +++ b/mozilla/layout/base/src/nsBidi.cpp @@ -2256,7 +2256,7 @@ PRInt32 nsBidi::doWriteReverse(const PRUnichar *src, PRInt32 srcLength, j=srcLength; if(options&NSBIDI_DO_MIRRORING) { /* mirror only the base character */ - c = SymmSwap((PRUnichar)c); + c = SymmSwap(c); PRInt32 k=0; UTF_APPEND_CHAR_UNSAFE(dest, k, c); @@ -2335,7 +2335,7 @@ nsCharType nsBidi::GetCharType(PRUnichar aChar) return oResult; } -PRUnichar nsBidi::SymmSwap(PRUnichar aChar) +PRUint32 nsBidi::SymmSwap(PRUint32 aChar) { return Mirrored(aChar); } diff --git a/mozilla/layout/base/src/symmtable.h b/mozilla/layout/base/src/symmtable.h index 36345898a58..31ad6ac7bbf 100644 --- a/mozilla/layout/base/src/symmtable.h +++ b/mozilla/layout/base/src/symmtable.h @@ -127,9 +127,9 @@ const static PRUint8 symmtable_30[256] = { /* F_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static PRUnichar Mirrored(PRUnichar u) +static PRUint32 Mirrored(PRUint32 u) { - switch (u & 0xFF00) { + switch (u & 0xFFFFFF00) { // XOR the character with the bitmap in the conversion table to give the symmetric equivalent case 0: u ^= symmtable_00[u & 0xff]; diff --git a/mozilla/layout/base/symmtable.h b/mozilla/layout/base/symmtable.h index 36345898a58..31ad6ac7bbf 100644 --- a/mozilla/layout/base/symmtable.h +++ b/mozilla/layout/base/symmtable.h @@ -127,9 +127,9 @@ const static PRUint8 symmtable_30[256] = { /* F_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static PRUnichar Mirrored(PRUnichar u) +static PRUint32 Mirrored(PRUint32 u) { - switch (u & 0xFF00) { + switch (u & 0xFFFFFF00) { // XOR the character with the bitmap in the conversion table to give the symmetric equivalent case 0: u ^= symmtable_00[u & 0xff]; diff --git a/mozilla/layout/tools/gensymmtable.pl b/mozilla/layout/tools/gensymmtable.pl index fca4edfe74e..63fdf0731e9 100644 --- a/mozilla/layout/tools/gensymmtable.pl +++ b/mozilla/layout/tools/gensymmtable.pl @@ -100,8 +100,8 @@ foreach $block (0 .. 0xff) { } # Generate conversion method -print OUT "\nstatic PRUnichar Mirrored(PRUnichar u)\n{\n"; -print OUT " switch (u & 0xFF00) {\n"; +print OUT "\nstatic PRUint32 Mirrored(PRUint32 u)\n{\n"; +print OUT " switch (u & 0xFFFFFF00) {\n"; print OUT " // XOR the character with the bitmap in the conversion table to give the symmetric equivalent\n"; foreach $block (0 .. 0xff) { if (1==@isblock[$block]) {