home *** CD-ROM | disk | FTP | other *** search
/ CD-ROM User 1995 January / CDuser6Jan95.iso / DYNASTY / WING / HTTABLES.C_ / HTTABLES.C
Text File  |  1994-06-19  |  7KB  |  376 lines

  1. /*
  2.  *    HTTABLES.C
  3.  *
  4.  *    (C) Copyright Microsoft Corp. 1993.  All rights reserved.
  5.  *
  6.  *    You have a royalty-free right to use, modify, reproduce and 
  7.  *    distribute the Sample Files (and/or any modified version) in 
  8.  *    any way you find useful, provided that you agree that 
  9.  *    Microsoft has no warranty obligations or liability for any 
  10.  *    Sample Application Files which are modified. 
  11.  */
  12.  
  13. #include<windows.h>
  14. #include<memory.h>
  15.  
  16. #include<wing.h>
  17.  
  18.  
  19. long const PALETTERGBFlag = 0x02000000;
  20. long const PALETTEINDEXFlag = 0x01000000;
  21.  
  22. /*----------------------------------------------------------------------------
  23.  
  24. Division lookup tables.  These tables compute 0-255 divided by 51 and
  25. modulo 51.  These tables could approximate gamma correction.
  26.  
  27. */
  28.  
  29. char unsigned const aDividedBy51Rounded[256] =
  30. {
  31.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  32.     0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  33.     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  34.     1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  35.     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  36.     2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  37.     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  38.     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
  39.     4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
  40.     4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
  41.     5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
  42. };
  43.  
  44. char unsigned const aDividedBy51[256] =
  45. {
  46.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  47.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  48.     0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  49.     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  50.     1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  51.     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  52.     2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  53.     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  54.     3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
  55.     4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
  56.     4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 
  57. };
  58.  
  59. char unsigned const aModulo51[256] =
  60. {
  61.     0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
  62.     20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
  63.     38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 0, 1, 2, 3, 4, 5, 6,
  64.     7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
  65.     26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
  66.     44, 45, 46, 47, 48, 49, 50, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
  67.     13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
  68.     31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
  69.     49, 50, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
  70.     18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
  71.     36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 0, 1, 2, 3,
  72.     4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
  73.     23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
  74.     41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 0, 
  75. };
  76.  
  77.  
  78. /*----------------------------------------------------------------------------
  79.  
  80. Multiplication LUTs.  These compute 0-5 times 6 and 36.
  81.  
  82. */
  83.  
  84. char unsigned const aTimes6[6] =
  85. {
  86.     0, 6, 12, 18, 24, 30
  87. };
  88.  
  89. char unsigned const aTimes36[6] =
  90. {
  91.     0, 36, 72, 108, 144, 180
  92. };
  93.  
  94.  
  95. /*----------------------------------------------------------------------------
  96.  
  97. Dither matrices for 8 bit to 2.6 bit halftones.
  98.  
  99. */
  100.  
  101. char unsigned const aHalftone16x16[256] =
  102. {
  103.     0, 44, 9, 41, 3, 46, 12, 43, 1, 44, 10, 41, 3, 46, 12, 43,
  104.     34, 16, 25, 19, 37, 18, 28, 21, 35, 16, 26, 19, 37, 18, 28, 21,
  105.     38, 6, 47, 3, 40, 9, 50, 6, 38, 7, 47, 4, 40, 9, 49, 6,
  106.     22, 28, 13, 31, 25, 31, 15, 34, 22, 29, 13, 32, 24, 31, 15, 34,
  107.     2, 46, 12, 43, 1, 45, 10, 42, 2, 45, 11, 42, 1, 45, 11, 42,
  108.     37, 18, 27, 21, 35, 17, 26, 20, 36, 17, 27, 20, 36, 17, 26, 20,
  109.     40, 8, 49, 5, 38, 7, 48, 4, 39, 8, 48, 5, 39, 7, 48, 4,
  110.     24, 30, 15, 33, 23, 29, 13, 32, 23, 30, 14, 33, 23, 29, 14, 32,
  111.     2, 46, 12, 43, 0, 44, 10, 41, 3, 47, 12, 44, 0, 44, 10, 41,
  112.     37, 18, 27, 21, 35, 16, 25, 19, 37, 19, 28, 22, 35, 16, 25, 19,
  113.     40, 9, 49, 5, 38, 7, 47, 4, 40, 9, 50, 6, 38, 6, 47, 3,
  114.     24, 30, 15, 34, 22, 29, 13, 32, 25, 31, 15, 34, 22, 28, 13, 31,
  115.     1, 45, 11, 42, 2, 46, 11, 42, 1, 45, 10, 41, 2, 46, 11, 43,
  116.     36, 17, 26, 20, 36, 17, 27, 21, 35, 16, 26, 20, 36, 18, 27, 21,
  117.     39, 8, 48, 4, 39, 8, 49, 5, 38, 7, 48, 4, 39, 8, 49, 5,
  118.     23, 29, 14, 33, 24, 30, 14, 33, 23, 29, 13, 32, 24, 30, 14, 33,
  119. };
  120.  
  121. char unsigned const aHalftone8x8[64] =
  122. {
  123.      0, 38,  9, 47,  2, 40, 11, 50,
  124.     25, 12, 35, 22, 27, 15, 37, 24,
  125.      6, 44,  3, 41,  8, 47,  5, 43,
  126.     31, 19, 28, 15, 34, 21, 31, 18,
  127.      1, 39, 11, 49,  0, 39, 10, 48,
  128.     27, 14, 36, 23, 26, 13, 35, 23,
  129.      7, 46,  4, 43,  7, 45,  3, 42,
  130.     33, 20, 30, 17, 32, 19, 29, 16,
  131. };
  132.  
  133. char unsigned const aHalftone4x4_1[16] =
  134. {
  135.     0, 25, 6, 31,
  136.     38, 12, 44, 19,
  137.     9, 35, 3, 28,
  138.     47, 22, 41, 15
  139. };
  140.  
  141. char unsigned const aHalftone4x4_2[16] =
  142. {
  143.     41, 3, 9, 28,
  144.     35, 15, 22, 47,
  145.     6, 25, 38, 0,
  146.     19, 44, 31, 12
  147. };
  148.  
  149. /***************************************************************************
  150.     aWinGHalftoneTranslation
  151.  
  152.     Translates a 2.6 bit-per-pixel halftoned representation into the
  153.     slightly rearranged WinG Halftone Palette.
  154. */
  155.  
  156. char unsigned const aWinGHalftoneTranslation[216] =
  157. {
  158.     0,
  159.     29,
  160.     30,
  161.     31,
  162.     32,
  163.     249,
  164.     33,
  165.     34,
  166.     35,
  167.     36,
  168.     37,
  169.     38,
  170.     39,
  171.     40,
  172.     41,
  173.     42,
  174.     43,
  175.     44,
  176.     45,
  177.     46,
  178.     47,
  179.     48,
  180.     49,
  181.     50,
  182.     51,
  183.     52,
  184.     53,
  185.     54,
  186.     55,
  187.     56,
  188.     250,
  189.     250,
  190.     57,
  191.     58,
  192.     59,
  193.     251,
  194.     60,
  195.     61,
  196.     62,
  197.     63,
  198.     64,
  199.     65,
  200.     66,
  201.     67,
  202.     68,
  203.     69,
  204.     70,
  205.     71,
  206.     72,
  207.     73,
  208.     74,
  209.     75,
  210.     76,
  211.     77,
  212.     78,
  213.     79,
  214.     80,
  215.     81,
  216.     82,
  217.     83,
  218.     84,
  219.     85,
  220.     86,
  221.     87,
  222.     88,
  223.     89,
  224.     250,
  225.     90,
  226.     91,
  227.     92,
  228.     93,
  229.     94,
  230.     95,
  231.     96,
  232.     97,
  233.     98,
  234.     99,
  235.     100,
  236.     101,
  237.     102,
  238.     103,
  239.     104,
  240.     105,
  241.     106,
  242.     107,
  243.     108,
  244.     109,
  245.     110,
  246.     111,
  247.     227,
  248.     112,
  249.     113,
  250.     114,
  251.     115,
  252.     116,
  253.     117,
  254.     118,
  255.     119,
  256.     151,
  257.     120,
  258.     121,
  259.     122,
  260.     123,
  261.     124,
  262.     228,
  263.     125,
  264.     126,
  265.     229,
  266.     133,
  267.     162,
  268.     135,
  269.     131,
  270.     132,
  271.     137,
  272.     166,
  273.     134,
  274.     140,
  275.     130,
  276.     136,
  277.     143,
  278.     138,
  279.     139,
  280.     174,
  281.     141,
  282.     142,
  283.     177,
  284.     129,
  285.     144,
  286.     145,
  287.     146,
  288.     147,
  289.     148,
  290.     149,
  291.     150,
  292.     157,
  293.     152,
  294.     153,
  295.     154,
  296.     155,
  297.     156,
  298.     192,
  299.     158,
  300.     159,
  301.     160,
  302.     161,
  303.     196,
  304.     163,
  305.     164,
  306.     165,
  307.     127,
  308.     199,
  309.     167,
  310.     168,
  311.     169,
  312.     170,
  313.     171,
  314.     172,
  315.     173,
  316.     207,
  317.     175,
  318.     176,
  319.     210,
  320.     178,
  321.     179,
  322.     180,
  323.     181,
  324.     182,
  325.     183,
  326.     184,
  327.     185,
  328.     186,
  329.     187,
  330.     188,
  331.     189,
  332.     190,
  333.     191,
  334.     224,
  335.     193,
  336.     194,
  337.     195,
  338.     252,
  339.     252,
  340.     197,
  341.     198,
  342.     128,
  343.     253,
  344.     252,
  345.     200,
  346.     201,
  347.     202,
  348.     203,
  349.     204,
  350.     205,
  351.     206,
  352.     230,
  353.     208,
  354.     209,
  355.     231,
  356.     211,
  357.     212,
  358.     213,
  359.     214,
  360.     215,
  361.     216,
  362.     217,
  363.     218,
  364.     219,
  365.     220,
  366.     221,
  367.     222,
  368.     254,
  369.     223,
  370.     232,
  371.     225,
  372.     226,
  373.     255,
  374. };
  375.  
  376.