104 lines
3.1 KiB
C#
104 lines
3.1 KiB
C#
using System;
|
|
using System.Text;
|
|
|
|
namespace ThoughtWorks.QRCode.Codec.Util
|
|
{
|
|
|
|
/*
|
|
* This class must be modified as a adapter class for "edition dependent" methods
|
|
*/
|
|
|
|
public class QRCodeUtility
|
|
{
|
|
// Because CLDC1.0 does not support Math.sqrt(), we have to define it manually.
|
|
// faster sqrt (GuoQing Hu's FIX)
|
|
public static int sqrt(int val)
|
|
{
|
|
// using estimate method from http://www.azillionmonkeys.com/qed/sqroot.html
|
|
// Console.out.print(val + ", " + (int)Math.sqrt(val) + ", ");
|
|
int temp, g = 0, b = 0x8000, bshft = 15;
|
|
do
|
|
{
|
|
if (val >= (temp = (((g << 1) + b) << bshft--)))
|
|
{
|
|
g += b;
|
|
val -= temp;
|
|
}
|
|
}
|
|
while ((b >>= 1) > 0);
|
|
|
|
return g;
|
|
}
|
|
|
|
// for au by KDDI Profile Phase 3.0
|
|
// public static int[][] parseImage(Image image) {
|
|
// int width = image.getWidth();
|
|
// int height = image.getHeight();
|
|
// Image mutable = Image.createImage(width, height);
|
|
// Graphics g = mutable.getGraphics();
|
|
// g.drawImage(image, 0, 0, Graphics.TOP|Graphics.LEFT);
|
|
// ExtensionGraphics eg = (ExtensionGraphics) g;
|
|
// int[][] result = new int[width][height];
|
|
//
|
|
// for (int x = 0; x < width; x++) {
|
|
// for (int y = 0; y < height; y++) {
|
|
// result[x][y] = eg.getPixel(x, y);
|
|
// }
|
|
// }
|
|
// return result;
|
|
// }
|
|
//
|
|
// public static int[][] parseImage(byte[] imageData) {
|
|
// return parseImage(Image.createImage(imageData, 0, imageData.length));
|
|
// }
|
|
|
|
|
|
public static bool IsUniCode(String value)
|
|
{
|
|
byte[] ascii = AsciiStringToByteArray(value);
|
|
byte[] unicode = UnicodeStringToByteArray(value);
|
|
string value1 = FromASCIIByteArray(ascii);
|
|
string value2 = FromUnicodeByteArray(unicode);
|
|
if (value1 != value2)
|
|
return true;
|
|
return false;
|
|
}
|
|
|
|
public static bool IsUnicode(byte[] byteData)
|
|
{
|
|
string value1 = FromASCIIByteArray(byteData);
|
|
string value2 = FromUnicodeByteArray(byteData);
|
|
byte[] ascii = AsciiStringToByteArray(value1);
|
|
byte[] unicode = UnicodeStringToByteArray(value2);
|
|
if (ascii[0] != unicode[0])
|
|
return true;
|
|
return false;
|
|
}
|
|
|
|
public static String FromASCIIByteArray(byte[] characters)
|
|
{
|
|
ASCIIEncoding encoding = new ASCIIEncoding();
|
|
String constructedString = encoding.GetString(characters);
|
|
return constructedString;
|
|
}
|
|
|
|
public static String FromUnicodeByteArray(byte[] characters)
|
|
{
|
|
UnicodeEncoding encoding = new UnicodeEncoding();
|
|
String constructedString = encoding.GetString(characters);
|
|
return constructedString;
|
|
}
|
|
|
|
public static byte[] AsciiStringToByteArray(String str)
|
|
{
|
|
ASCIIEncoding encoding = new ASCIIEncoding();
|
|
return encoding.GetBytes(str);
|
|
}
|
|
|
|
public static byte[] UnicodeStringToByteArray(String str)
|
|
{
|
|
UnicodeEncoding encoding = new UnicodeEncoding();
|
|
return encoding.GetBytes(str);
|
|
}
|
|
}
|
|
} |