/* GIMP - The GNU Image Manipulation Program * Copyright (C) 1995 Spencer Kimball and Peter Mattis * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /* This header file is used by generate-huffman.c to auto-generate * the actual "huffman.h". * * The bit sequences for terminating and make-up codes can be found in * ITU-T Rec T.4: * https://www.itu.int/rec/dologin_pub.asp?lang=e&id=T-REC-T.4-200307-I!!PDF-E&type=items */ struct Huffcode { int number; const char *bits; }; /* clang-format off */ static struct Huffcode huff_term_white[] = { { 0, "00110101" }, { 1, "000111" }, { 2, "0111" }, { 3, "1000" }, { 4, "1011" }, { 5, "1100" }, { 6, "1110" }, { 7, "1111" }, { 8, "10011" }, { 9, "10100" }, { 10, "00111" }, { 11, "01000" }, { 12, "001000" }, { 13, "000011" }, { 14, "110100" }, { 15, "110101" }, { 16, "101010" }, { 17, "101011" }, { 18, "0100111" }, { 19, "0001100" }, { 20, "0001000" }, { 21, "0010111" }, { 22, "0000011" }, { 23, "0000100" }, { 24, "0101000" }, { 25, "0101011" }, { 26, "0010011" }, { 27, "0100100" }, { 28, "0011000" }, { 29, "00000010" }, { 30, "00000011" }, { 31, "00011010" }, { 32, "00011011" }, { 33, "00010010" }, { 34, "00010011" }, { 35, "00010100" }, { 36, "00010101" }, { 37, "00010110" }, { 38, "00010111" }, { 39, "00101000" }, { 40, "00101001" }, { 41, "00101010" }, { 42, "00101011" }, { 43, "00101100" }, { 44, "00101101" }, { 45, "00000100" }, { 46, "00000101" }, { 47, "00001010" }, { 48, "00001011" }, { 49, "01010010" }, { 50, "01010011" }, { 51, "01010100" }, { 52, "01010101" }, { 53, "00100100" }, { 54, "00100101" }, { 55, "01011000" }, { 56, "01011001" }, { 57, "01011010" }, { 58, "01011011" }, { 59, "01001010" }, { 60, "01001011" }, { 61, "00110010" }, { 62, "00110011" }, { 63, "00110100" }, }; static struct Huffcode huff_term_black[] = { { 0, "0000110111" }, { 1, "010" }, { 2, "11" }, { 3, "10" }, { 4, "011" }, { 5, "0011" }, { 6, "0010" }, { 7, "00011" }, { 8, "000101" }, { 9, "000100" }, { 10, "0000100" }, { 11, "0000101" }, { 12, "0000111" }, { 13, "00000100" }, { 14, "00000111" }, { 15, "000011000" }, { 16, "0000010111" }, { 17, "0000011000" }, { 18, "0000001000" }, { 19, "00001100111" }, { 20, "00001101000" }, { 21, "00001101100" }, { 22, "00000110111" }, { 23, "00000101000" }, { 24, "00000010111" }, { 25, "00000011000" }, { 26, "000011001010" }, { 27, "000011001011" }, { 28, "000011001100" }, { 29, "000011001101" }, { 30, "000001101000" }, { 31, "000001101001" }, { 32, "000001101010" }, { 33, "000001101011" }, { 34, "000011010010" }, { 35, "000011010011" }, { 36, "000011010100" }, { 37, "000011010101" }, { 38, "000011010110" }, { 39, "000011010111" }, { 40, "000001101100" }, { 41, "000001101101" }, { 42, "000011011010" }, { 43, "000011011011" }, { 44, "000001010100" }, { 45, "000001010101" }, { 46, "000001010110" }, { 47, "000001010111" }, { 48, "000001100100" }, { 49, "000001100101" }, { 50, "000001010010" }, { 51, "000001010011" }, { 52, "000000100100" }, { 53, "000000110111" }, { 54, "000000111000" }, { 55, "000000100111" }, { 56, "000000101000" }, { 57, "000001011000" }, { 58, "000001011001" }, { 59, "000000101011" }, { 60, "000000101100" }, { 61, "000001011010" }, { 62, "000001100110" }, { 63, "000001100111" }, }; static struct Huffcode huff_makeup_white[] = { { 64, "11011" }, { 128, "10010" }, { 192, "010111" }, { 256, "0110111" }, { 320, "00110110" }, { 384, "00110111" }, { 448, "01100100" }, { 512, "01100101" }, { 576, "01101000" }, { 640, "01100111" }, { 704, "011001100" }, { 768, "011001101" }, { 832, "011010010" }, { 896, "011010011" }, { 960, "011010100" }, { 1024, "011010101" }, { 1088, "011010110" }, { 1152, "011010111" }, { 1216, "011011000" }, { 1280, "011011001" }, { 1344, "011011010" }, { 1408, "011011011" }, { 1472, "010011000" }, { 1536, "010011001" }, { 1600, "010011010" }, { 1664, "011000" }, { 1728, "010011011" }, { 1792, "00000001000" }, { 1856, "00000001100" }, { 1920, "00000001101" }, { 1984, "000000010010" }, { 2048, "000000010011" }, { 2112, "000000010100" }, { 2176, "000000010101" }, { 2240, "000000010110" }, { 2304, "000000010111" }, { 2368, "000000011100" }, { 2432, "000000011101" }, { 2496, "000000011110" }, { 2560, "000000011111" }, }; static struct Huffcode huff_makeup_black[] = { { 64, "0000001111" }, { 128, "000011001000" }, { 192, "000011001001" }, { 256, "000001011011" }, { 320, "000000110011" }, { 384, "000000110100" }, { 448, "000000110101" }, { 512, "0000001101100" }, { 576, "0000001101101" }, { 640, "0000001001010" }, { 704, "0000001001011" }, { 768, "0000001001100" }, { 832, "0000001001101" }, { 896, "0000001110010" }, { 960, "0000001110011" }, { 1024, "0000001110100" }, { 1088, "0000001110101" }, { 1152, "0000001110110" }, { 1216, "0000001110111" }, { 1280, "0000001010010" }, { 1344, "0000001010011" }, { 1408, "0000001010100" }, { 1472, "0000001010101" }, { 1536, "0000001011010" }, { 1600, "0000001011011" }, { 1664, "0000001100100" }, { 1728, "0000001100101" }, { 1792, "00000001000" }, { 1856, "00000001100" }, { 1920, "00000001101" }, { 1984, "000000010010" }, { 2048, "000000010011" }, { 2112, "000000010100" }, { 2176, "000000010101" }, { 2240, "000000010110" }, { 2304, "000000010111" }, { 2368, "000000011100" }, { 2432, "000000011101" }, { 2496, "000000011110" }, { 2560, "000000011111" }, };