| class BitUtility { |
| static bool isPowerOf2(int x) => (x & (x - 1)) == 0; |
| |
| static int rotateRight(int value, int shift) => |
| (value >> shift) | (value << (32 - shift)); |
| |
| static const List<int> BITSCALE_5_TO_8 = const [ |
| 0, 8, 16, 24, 32, 41, 49, 57, 65, 74, |
| 82, 90, 98, 106, 115, 123, 131, 139, 148, 156, |
| 164, 172, 180, 189, 197, 205, 213, 222, 230, 238, |
| 246, 255]; |
| |
| static const List<int> BITSCALE_4_TO_8 = const [ |
| 0, 17, 34, 51, 68, 85, 102, 119, 136, 153, |
| 170, 187, 204, 221, 238, 255]; |
| |
| static const List<int> BITSCALE_3_TO_8 = const [ |
| 0, 36, 72, 109, 145, 182, 218, 255]; |
| |
| static const List<int> BITSCALE_8_TO_5_FLOOR = const [ |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, |
| 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, |
| 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, |
| 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, |
| 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, |
| 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, |
| 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, |
| 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, |
| 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, |
| 10, 11, 11, 11, 11, 11, 11, 11, 11, 12, |
| 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, |
| 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, |
| 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, |
| 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, |
| 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, |
| 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, |
| 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, |
| 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, |
| 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, |
| 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, |
| 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, |
| 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, |
| 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, |
| 27, 28, 28, 28, 28, 28, 28, 28, 28, 29, |
| 29, 29, 29, 29, 29, 29, 29, 30, 30, 30, |
| 30, 30, 30, 30, 30, 31]; |
| |
| static const List<int> BITSCALE_8_TO_4_FLOOR = const [ |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, |
| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
| 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, |
| 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, |
| 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, |
| 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, |
| 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, |
| 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, |
| 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, |
| 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, |
| 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, |
| 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, |
| 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, |
| 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, |
| 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, |
| 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, |
| 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, |
| 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, |
| 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, |
| 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, |
| 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, |
| 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, |
| 14, 14, 14, 14, 14, 15]; |
| |
| static const List<int> BITSCALE_8_TO_3_FLOOR = const [ |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, |
| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
| 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, |
| 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, |
| 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, |
| 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, |
| 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, |
| 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, |
| 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, |
| 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, |
| 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, |
| 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, |
| 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, |
| 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, |
| 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, |
| 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, |
| 6, 6, 6, 6, 6, 7]; |
| |
| static const List<int> BITSCALE_8_TO_5_CEIL = const [ |
| 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, |
| 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, |
| 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, |
| 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, |
| 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, |
| 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, |
| 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, |
| 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, |
| 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, |
| 11, 12, 12, 12, 12, 12, 12, 12, 12, 13, |
| 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, |
| 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, |
| 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, |
| 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, |
| 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, |
| 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, |
| 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, |
| 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, |
| 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, |
| 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, |
| 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, |
| 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, |
| 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, |
| 28, 29, 29, 29, 29, 29, 29, 29, 29, 30, |
| 30, 30, 30, 30, 30, 30, 30, 31, 31, 31, |
| 31, 31, 31, 31, 31, 31]; |
| |
| static const List<int> BITSCALE_8_TO_4_CEIL = const [ |
| 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
| 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, |
| 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, |
| 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, |
| 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, |
| 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, |
| 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, |
| 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, |
| 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, |
| 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, |
| 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, |
| 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, |
| 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, |
| 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, |
| 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, |
| 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, |
| 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, |
| 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, |
| 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, |
| 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, |
| 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, |
| 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, |
| 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, |
| 15, 15, 15, 15, 15, 15]; |
| |
| static const List<int> BITSCALE_8_TO_3_CEIL = const [ |
| 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, |
| 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, |
| 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, |
| 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, |
| 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, |
| 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, |
| 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, |
| 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, |
| 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, |
| 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, |
| 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, |
| 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, |
| 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, |
| 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, |
| 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, |
| 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, |
| 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, |
| 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, |
| 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, |
| 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, |
| 7, 7, 7, 7, 7, 7]; |
| } |