- // Convert "mode" to String for debugging.
- public static String modeToString(int mode) {
- switch (mode) {
- case QRCode.MODE_UNDEFINED:
- return "UNDEFINED";
- case QRCode.MODE_NUMERIC:
- return "NUMERIC";
- case QRCode.MODE_ALPHANUMERIC:
- return "ALPHANUMERIC";
- case QRCode.MODE_8BIT_BYTE:
- return "8BIT_BYTE";
- case QRCode.MODE_KANJI:
- return "KANJI";
- default:
- break;
- }
- return "UNKNOWN";
- }
-
- // Return the code of mode. On error, return -1. The codes of modes are defined in the table 2 of
- // JISX0510:2004 (p.16).
- public static int getModeCode(final int mode) throws WriterException {
- switch (mode) {
- case QRCode.MODE_NUMERIC:
- return 1;
- case QRCode.MODE_ALPHANUMERIC:
- return 2;
- case QRCode.MODE_8BIT_BYTE:
- return 4;
- case QRCode.MODE_KANJI:
- return 8;
- default:
- throw new WriterException("Unknown mode: " + mode);
- }
- }
-
- // Return the number of bits needed for representing the length info of QR Code with "version" and
- // "mode". On error, return -1.
- static int getNumBitsForLength(int version, int mode) {
- if (!isValidVersion(version)) {
- throw new IllegalArgumentException("Invalid version: " + version);
- }
- if (!isValidMode(mode)) {
- throw new IllegalArgumentException("Invalid mode: " + mode);
- }
- if (version >= 1 && version <= 9) {
- return NUM_BITS_TABLE[0][mode];
- } else if (version >= 10 && version <= 26) {
- return NUM_BITS_TABLE[1][mode];
- } else if (version >= 27 && version <= 40) {
- return NUM_BITS_TABLE[2][mode];
- }
- throw new IllegalArgumentException("Bad version: " + version);
- }
-