1/*
2 * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26
27/*
28 * DESCRIPTION:
29 *
30 * mlib_u16 mlib_div6_tab[x] = 0xff00/6/x;
31 * mlib_u16 mlib_div1_tab[x] = 0xff00/x;
32 * mlib_d64 mlib_U82D64[x] = (mlib_d64)x;
33 * mlib_f32 mlib_U82F32[x] = (mlib_f32)x;
34 * mlib_f32 mlib_HSL2RGB_L2[x] = x/255.0 for x<128, and (255-x)/255.0 for x >= 128;
35 * mlib_f32 mlib_HSL2RGB_F[x] = 1.0 - fabs(fraction(x*3/256.) * 4.0f - 2.0)
36 *
37 * REFERENCING:
38 * mlib_div* tables are used to exclude dividing in functions
39 * mlib_ImageColorRGB2HSV
40 * mlib_ImageColorRGB2HSL
41 * mlib_ImageDivAlpha
42 *
43 * table mlib_U82D64 is used to exclude conversion unsigned
44 * byte to double in functions
45 * mlib_ImageColorConvert...
46 * mlib_ImageDataTypeConvert
47 * mlib_ImageAffine
48 * mlib_ImageAffineTable
49 * mlib_ImageZoomTranslate
50 * mlib_ImageZoomTranslateTable
51 * mlib_ImageGridWarp
52 * mlib_ImagePolynomialWarp
53 * mlib_ImageCrossCorrel
54 * mlib_ImageMoment2
55 * mlib_ImageStdDev
56 * mlib_ImageFourierTransform
57 *
58 * table mlib_U82F32 is used to exclude conversion unsigned
59 * byte to float in functions
60 * mlib_ImageBlend
61 * mlib_ImageDivShift
62 * mlib_ImageMulAlpha
63 * mlib_ImageMulAlpha_Inp
64 * mlib_ImageMulShift
65 * mlib_ImageBlend_BDST_BSRC
66 * mlib_ImageColorHSL2RGB
67 * mlib_ImageColorHSV2RGB
68 * mlib_ImageDataTypeConvert
69 * mlib_ImageAffine
70 * mlib_ImageAffineTable
71 * mlib_ImageZoomTranslate
72 * mlib_ImageZoomTranslateTable
73 * mlib_ImageConvMxN
74 * mlib_ImageSobel
75 * mlib_ImageGradient3x3
76 * mlib_ImageGradientMxN
77 *
78 * tables mlib_HSL2RGB_* are used to exclude conversion unsigned
79 * byte to float in functions with some computations
80 * mlib_ImageColorHSL2RGB
81 */
82
83#include "mlib_image.h"
84#define __DIV_TABLE_DEFINED
85#include "mlib_ImageDivTables.h"
86
87/***************************************************************/
88/* *INDENT-OFF* */
89
90const mlib_u16 mlib_div6_tab[] = {
91 32767, 10880, 5440, 3627, 2720, 2176, 1813, 1554,
92 1360, 1209, 1088, 989, 907, 837, 777, 725,
93 680, 640, 604, 573, 544, 518, 495, 473,
94 453, 435, 418, 403, 389, 375, 363, 351,
95 340, 330, 320, 311, 302, 294, 286, 279,
96 272, 265, 259, 253, 247, 242, 237, 231,
97 227, 222, 218, 213, 209, 205, 201, 198,
98 194, 191, 188, 184, 181, 178, 175, 173,
99 170, 167, 165, 162, 160, 158, 155, 153,
100 151, 149, 147, 145, 143, 141, 139, 138,
101 136, 134, 133, 131, 130, 128, 127, 125,
102 124, 122, 121, 120, 118, 117, 116, 115,
103 113, 112, 111, 110, 109, 108, 107, 106,
104 105, 104, 103, 102, 101, 100, 99, 98,
105 97, 96, 95, 95, 94, 93, 92, 91,
106 91, 90, 89, 88, 88, 87, 86, 86,
107 85, 84, 84, 83, 82, 82, 81, 81,
108 80, 79, 79, 78, 78, 77, 77, 76,
109 76, 75, 75, 74, 74, 73, 73, 72,
110 72, 71, 71, 70, 70, 69, 69, 68,
111 68, 68, 67, 67, 66, 66, 66, 65,
112 65, 64, 64, 64, 63, 63, 63, 62,
113 62, 61, 61, 61, 60, 60, 60, 59,
114 59, 59, 58, 58, 58, 58, 57, 57,
115 57, 56, 56, 56, 56, 55, 55, 55,
116 54, 54, 54, 54, 53, 53, 53, 53,
117 52, 52, 52, 52, 51, 51, 51, 51,
118 50, 50, 50, 50, 49, 49, 49, 49,
119 49, 48, 48, 48, 48, 48, 47, 47,
120 47, 47, 46, 46, 46, 46, 46, 46,
121 45, 45, 45, 45, 45, 44, 44, 44,
122 44, 44, 44, 43, 43, 43, 43, 43
123};
124
125/***************************************************************/
126
127const mlib_u16 mlib_div1_tab[] = {
128 65280, 65280, 32640, 21760, 16320, 13056, 10880, 9326,
129 8160, 7253, 6528, 5935, 5440, 5022, 4663, 4352,
130 4080, 3840, 3627, 3436, 3264, 3109, 2967, 2838,
131 2720, 2611, 2511, 2418, 2331, 2251, 2176, 2106,
132 2040, 1978, 1920, 1865, 1813, 1764, 1718, 1674,
133 1632, 1592, 1554, 1518, 1484, 1451, 1419, 1389,
134 1360, 1332, 1306, 1280, 1255, 1232, 1209, 1187,
135 1166, 1145, 1126, 1106, 1088, 1070, 1053, 1036,
136 1020, 1004, 989, 974, 960, 946, 933, 919,
137 907, 894, 882, 870, 859, 848, 837, 826,
138 816, 806, 796, 787, 777, 768, 759, 750,
139 742, 733, 725, 717, 710, 702, 694, 687,
140 680, 673, 666, 659, 653, 646, 640, 634,
141 628, 622, 616, 610, 604, 599, 593, 588,
142 583, 578, 573, 568, 563, 558, 553, 549,
143 544, 540, 535, 531, 526, 522, 518, 514,
144 510, 506, 502, 498, 495, 491, 487, 484,
145 480, 476, 473, 470, 466, 463, 460, 457,
146 453, 450, 447, 444, 441, 438, 435, 432,
147 429, 427, 424, 421, 418, 416, 413, 411,
148 408, 405, 403, 400, 398, 396, 393, 391,
149 389, 386, 384, 382, 380, 377, 375, 373,
150 371, 369, 367, 365, 363, 361, 359, 357,
151 355, 353, 351, 349, 347, 345, 344, 342,
152 340, 338, 336, 335, 333, 331, 330, 328,
153 326, 325, 323, 322, 320, 318, 317, 315,
154 314, 312, 311, 309, 308, 306, 305, 304,
155 302, 301, 299, 298, 297, 295, 294, 293,
156 291, 290, 289, 288, 286, 285, 284, 283,
157 281, 280, 279, 278, 277, 275, 274, 273,
158 272, 271, 270, 269, 268, 266, 265, 264,
159 263, 262, 261, 260, 259, 258, 257, 256
160};
161
162/***************************************************************/
163
164const mlib_f32 mlib_HSL2RGB_L2[] = {
165 0.000000f, 0.003922f, 0.007843f, 0.011765f, 0.015686f, 0.019608f, 0.023529f, 0.027451f,
166 0.031373f, 0.035294f, 0.039216f, 0.043137f, 0.047059f, 0.050980f, 0.054902f, 0.058824f,
167 0.062745f, 0.066667f, 0.070588f, 0.074510f, 0.078431f, 0.082353f, 0.086275f, 0.090196f,
168 0.094118f, 0.098039f, 0.101961f, 0.105882f, 0.109804f, 0.113725f, 0.117647f, 0.121569f,
169 0.125490f, 0.129412f, 0.133333f, 0.137255f, 0.141176f, 0.145098f, 0.149020f, 0.152941f,
170 0.156863f, 0.160784f, 0.164706f, 0.168627f, 0.172549f, 0.176471f, 0.180392f, 0.184314f,
171 0.188235f, 0.192157f, 0.196078f, 0.200000f, 0.203922f, 0.207843f, 0.211765f, 0.215686f,
172 0.219608f, 0.223529f, 0.227451f, 0.231373f, 0.235294f, 0.239216f, 0.243137f, 0.247059f,
173 0.250980f, 0.254902f, 0.258824f, 0.262745f, 0.266667f, 0.270588f, 0.274510f, 0.278431f,
174 0.282353f, 0.286275f, 0.290196f, 0.294118f, 0.298039f, 0.301961f, 0.305882f, 0.309804f,
175 0.313725f, 0.317647f, 0.321569f, 0.325490f, 0.329412f, 0.333333f, 0.337255f, 0.341176f,
176 0.345098f, 0.349020f, 0.352941f, 0.356863f, 0.360784f, 0.364706f, 0.368627f, 0.372549f,
177 0.376471f, 0.380392f, 0.384314f, 0.388235f, 0.392157f, 0.396078f, 0.400000f, 0.403922f,
178 0.407843f, 0.411765f, 0.415686f, 0.419608f, 0.423529f, 0.427451f, 0.431373f, 0.435294f,
179 0.439216f, 0.443137f, 0.447059f, 0.450980f, 0.454902f, 0.458824f, 0.462745f, 0.466667f,
180 0.470588f, 0.474510f, 0.478431f, 0.482353f, 0.486275f, 0.490196f, 0.494118f, 0.498039f,
181 0.498039f, 0.494118f, 0.490196f, 0.486275f, 0.482353f, 0.478431f, 0.474510f, 0.470588f,
182 0.466667f, 0.462745f, 0.458824f, 0.454902f, 0.450980f, 0.447059f, 0.443137f, 0.439216f,
183 0.435294f, 0.431373f, 0.427451f, 0.423529f, 0.419608f, 0.415686f, 0.411765f, 0.407843f,
184 0.403922f, 0.400000f, 0.396078f, 0.392157f, 0.388235f, 0.384314f, 0.380392f, 0.376471f,
185 0.372549f, 0.368627f, 0.364706f, 0.360784f, 0.356863f, 0.352941f, 0.349020f, 0.345098f,
186 0.341176f, 0.337255f, 0.333333f, 0.329412f, 0.325490f, 0.321569f, 0.317647f, 0.313725f,
187 0.309804f, 0.305882f, 0.301961f, 0.298039f, 0.294118f, 0.290196f, 0.286275f, 0.282353f,
188 0.278431f, 0.274510f, 0.270588f, 0.266667f, 0.262745f, 0.258824f, 0.254902f, 0.250980f,
189 0.247059f, 0.243137f, 0.239216f, 0.235294f, 0.231373f, 0.227451f, 0.223529f, 0.219608f,
190 0.215686f, 0.211765f, 0.207843f, 0.203922f, 0.200000f, 0.196078f, 0.192157f, 0.188235f,
191 0.184314f, 0.180392f, 0.176471f, 0.172549f, 0.168627f, 0.164706f, 0.160784f, 0.156863f,
192 0.152941f, 0.149020f, 0.145098f, 0.141176f, 0.137255f, 0.133333f, 0.129412f, 0.125490f,
193 0.121569f, 0.117647f, 0.113725f, 0.109804f, 0.105882f, 0.101961f, 0.098039f, 0.094118f,
194 0.090196f, 0.086275f, 0.082353f, 0.078431f, 0.074510f, 0.070588f, 0.066667f, 0.062745f,
195 0.058824f, 0.054902f, 0.050980f, 0.047059f, 0.043137f, 0.039216f, 0.035294f, 0.031373f,
196 0.027451f, 0.023529f, 0.019608f, 0.015686f, 0.011765f, 0.007843f, 0.003922f, 0.000000f
197};
198
199/***************************************************************/
200
201const mlib_f32 mlib_HSL2RGB_F[] = {
202 -1.000000f, -0.953125f, -0.906250f, -0.859375f, -0.812500f, -0.765625f, -0.718750f, -0.671875f,
203 -0.625000f, -0.578125f, -0.531250f, -0.484375f, -0.437500f, -0.390625f, -0.343750f, -0.296875f,
204 -0.250000f, -0.203125f, -0.156250f, -0.109375f, -0.062500f, -0.015625f, 0.031250f, 0.078125f,
205 0.125000f, 0.171875f, 0.218750f, 0.265625f, 0.312500f, 0.359375f, 0.406250f, 0.453125f,
206 0.500000f, 0.546875f, 0.593750f, 0.640625f, 0.687500f, 0.734375f, 0.781250f, 0.828125f,
207 0.875000f, 0.921875f, 0.968750f, 0.984375f, 0.937500f, 0.890625f, 0.843750f, 0.796875f,
208 0.750000f, 0.703125f, 0.656250f, 0.609375f, 0.562500f, 0.515625f, 0.468750f, 0.421875f,
209 0.375000f, 0.328125f, 0.281250f, 0.234375f, 0.187500f, 0.140625f, 0.093750f, 0.046875f,
210 0.000000f, -0.046875f, -0.093750f, -0.140625f, -0.187500f, -0.234375f, -0.281250f, -0.328125f,
211 -0.375000f, -0.421875f, -0.468750f, -0.515625f, -0.562500f, -0.609375f, -0.656250f, -0.703125f,
212 -0.750000f, -0.796875f, -0.843750f, -0.890625f, -0.937500f, -0.984375f, -0.968750f, -0.921875f,
213 -0.875000f, -0.828125f, -0.781250f, -0.734375f, -0.687500f, -0.640625f, -0.593750f, -0.546875f,
214 -0.500000f, -0.453125f, -0.406250f, -0.359375f, -0.312500f, -0.265625f, -0.218750f, -0.171875f,
215 -0.125000f, -0.078125f, -0.031250f, 0.015625f, 0.062500f, 0.109375f, 0.156250f, 0.203125f,
216 0.250000f, 0.296875f, 0.343750f, 0.390625f, 0.437500f, 0.484375f, 0.531250f, 0.578125f,
217 0.625000f, 0.671875f, 0.718750f, 0.765625f, 0.812500f, 0.859375f, 0.906250f, 0.953125f,
218 1.000000f, 0.953125f, 0.906250f, 0.859375f, 0.812500f, 0.765625f, 0.718750f, 0.671875f,
219 0.625000f, 0.578125f, 0.531250f, 0.484375f, 0.437500f, 0.390625f, 0.343750f, 0.296875f,
220 0.250000f, 0.203125f, 0.156250f, 0.109375f, 0.062500f, 0.015625f, -0.031250f, -0.078125f,
221 -0.125000f, -0.171875f, -0.218750f, -0.265625f, -0.312500f, -0.359375f, -0.406250f, -0.453125f,
222 -0.500000f, -0.546875f, -0.593750f, -0.640625f, -0.687500f, -0.734375f, -0.781250f, -0.828125f,
223 -0.875000f, -0.921875f, -0.968750f, -0.984375f, -0.937500f, -0.890625f, -0.843750f, -0.796875f,
224 -0.750000f, -0.703125f, -0.656250f, -0.609375f, -0.562500f, -0.515625f, -0.468750f, -0.421875f,
225 -0.375000f, -0.328125f, -0.281250f, -0.234375f, -0.187500f, -0.140625f, -0.093750f, -0.046875f,
226 0.000000f, 0.046875f, 0.093750f, 0.140625f, 0.187500f, 0.234375f, 0.281250f, 0.328125f,
227 0.375000f, 0.421875f, 0.468750f, 0.515625f, 0.562500f, 0.609375f, 0.656250f, 0.703125f,
228 0.750000f, 0.796875f, 0.843750f, 0.890625f, 0.937500f, 0.984375f, 0.968750f, 0.921875f,
229 0.875000f, 0.828125f, 0.781250f, 0.734375f, 0.687500f, 0.640625f, 0.593750f, 0.546875f,
230 0.500000f, 0.453125f, 0.406250f, 0.359375f, 0.312500f, 0.265625f, 0.218750f, 0.171875f,
231 0.125000f, 0.078125f, 0.031250f, -0.015625f, -0.062500f, -0.109375f, -0.156250f, -0.203125f,
232 -0.250000f, -0.296875f, -0.343750f, -0.390625f, -0.437500f, -0.484375f, -0.531250f, -0.578125f,
233 -0.625000f, -0.671875f, -0.718750f, -0.765625f, -0.812500f, -0.859375f, -0.906250f, -0.953125f
234};
235
236/***************************************************************/
237
238const mlib_f32 mlib_U82F32[] = {
239 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f,
240 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f,
241 16.0f, 17.0f, 18.0f, 19.0f, 20.0f, 21.0f, 22.0f, 23.0f,
242 24.0f, 25.0f, 26.0f, 27.0f, 28.0f, 29.0f, 30.0f, 31.0f,
243 32.0f, 33.0f, 34.0f, 35.0f, 36.0f, 37.0f, 38.0f, 39.0f,
244 40.0f, 41.0f, 42.0f, 43.0f, 44.0f, 45.0f, 46.0f, 47.0f,
245 48.0f, 49.0f, 50.0f, 51.0f, 52.0f, 53.0f, 54.0f, 55.0f,
246 56.0f, 57.0f, 58.0f, 59.0f, 60.0f, 61.0f, 62.0f, 63.0f,
247 64.0f, 65.0f, 66.0f, 67.0f, 68.0f, 69.0f, 70.0f, 71.0f,
248 72.0f, 73.0f, 74.0f, 75.0f, 76.0f, 77.0f, 78.0f, 79.0f,
249 80.0f, 81.0f, 82.0f, 83.0f, 84.0f, 85.0f, 86.0f, 87.0f,
250 88.0f, 89.0f, 90.0f, 91.0f, 92.0f, 93.0f, 94.0f, 95.0f,
251 96.0f, 97.0f, 98.0f, 99.0f, 100.0f, 101.0f, 102.0f, 103.0f,
252 104.0f, 105.0f, 106.0f, 107.0f, 108.0f, 109.0f, 110.0f, 111.0f,
253 112.0f, 113.0f, 114.0f, 115.0f, 116.0f, 117.0f, 118.0f, 119.0f,
254 120.0f, 121.0f, 122.0f, 123.0f, 124.0f, 125.0f, 126.0f, 127.0f,
255 128.0f, 129.0f, 130.0f, 131.0f, 132.0f, 133.0f, 134.0f, 135.0f,
256 136.0f, 137.0f, 138.0f, 139.0f, 140.0f, 141.0f, 142.0f, 143.0f,
257 144.0f, 145.0f, 146.0f, 147.0f, 148.0f, 149.0f, 150.0f, 151.0f,
258 152.0f, 153.0f, 154.0f, 155.0f, 156.0f, 157.0f, 158.0f, 159.0f,
259 160.0f, 161.0f, 162.0f, 163.0f, 164.0f, 165.0f, 166.0f, 167.0f,
260 168.0f, 169.0f, 170.0f, 171.0f, 172.0f, 173.0f, 174.0f, 175.0f,
261 176.0f, 177.0f, 178.0f, 179.0f, 180.0f, 181.0f, 182.0f, 183.0f,
262 184.0f, 185.0f, 186.0f, 187.0f, 188.0f, 189.0f, 190.0f, 191.0f,
263 192.0f, 193.0f, 194.0f, 195.0f, 196.0f, 197.0f, 198.0f, 199.0f,
264 200.0f, 201.0f, 202.0f, 203.0f, 204.0f, 205.0f, 206.0f, 207.0f,
265 208.0f, 209.0f, 210.0f, 211.0f, 212.0f, 213.0f, 214.0f, 215.0f,
266 216.0f, 217.0f, 218.0f, 219.0f, 220.0f, 221.0f, 222.0f, 223.0f,
267 224.0f, 225.0f, 226.0f, 227.0f, 228.0f, 229.0f, 230.0f, 231.0f,
268 232.0f, 233.0f, 234.0f, 235.0f, 236.0f, 237.0f, 238.0f, 239.0f,
269 240.0f, 241.0f, 242.0f, 243.0f, 244.0f, 245.0f, 246.0f, 247.0f,
270 248.0f, 249.0f, 250.0f, 251.0f, 252.0f, 253.0f, 254.0f, 255.0f,
271 256.0f
272};
273
274/***************************************************************/
275
276const mlib_d64 mlib_U82D64[] = {
277 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0,
278 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0,
279 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0,
280 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0,
281 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0,
282 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0,
283 48.0, 49.0, 50.0, 51.0, 52.0, 53.0, 54.0, 55.0,
284 56.0, 57.0, 58.0, 59.0, 60.0, 61.0, 62.0, 63.0,
285 64.0, 65.0, 66.0, 67.0, 68.0, 69.0, 70.0, 71.0,
286 72.0, 73.0, 74.0, 75.0, 76.0, 77.0, 78.0, 79.0,
287 80.0, 81.0, 82.0, 83.0, 84.0, 85.0, 86.0, 87.0,
288 88.0, 89.0, 90.0, 91.0, 92.0, 93.0, 94.0, 95.0,
289 96.0, 97.0, 98.0, 99.0, 100.0, 101.0, 102.0, 103.0,
290 104.0, 105.0, 106.0, 107.0, 108.0, 109.0, 110.0, 111.0,
291 112.0, 113.0, 114.0, 115.0, 116.0, 117.0, 118.0, 119.0,
292 120.0, 121.0, 122.0, 123.0, 124.0, 125.0, 126.0, 127.0,
293 128.0, 129.0, 130.0, 131.0, 132.0, 133.0, 134.0, 135.0,
294 136.0, 137.0, 138.0, 139.0, 140.0, 141.0, 142.0, 143.0,
295 144.0, 145.0, 146.0, 147.0, 148.0, 149.0, 150.0, 151.0,
296 152.0, 153.0, 154.0, 155.0, 156.0, 157.0, 158.0, 159.0,
297 160.0, 161.0, 162.0, 163.0, 164.0, 165.0, 166.0, 167.0,
298 168.0, 169.0, 170.0, 171.0, 172.0, 173.0, 174.0, 175.0,
299 176.0, 177.0, 178.0, 179.0, 180.0, 181.0, 182.0, 183.0,
300 184.0, 185.0, 186.0, 187.0, 188.0, 189.0, 190.0, 191.0,
301 192.0, 193.0, 194.0, 195.0, 196.0, 197.0, 198.0, 199.0,
302 200.0, 201.0, 202.0, 203.0, 204.0, 205.0, 206.0, 207.0,
303 208.0, 209.0, 210.0, 211.0, 212.0, 213.0, 214.0, 215.0,
304 216.0, 217.0, 218.0, 219.0, 220.0, 221.0, 222.0, 223.0,
305 224.0, 225.0, 226.0, 227.0, 228.0, 229.0, 230.0, 231.0,
306 232.0, 233.0, 234.0, 235.0, 236.0, 237.0, 238.0, 239.0,
307 240.0, 241.0, 242.0, 243.0, 244.0, 245.0, 246.0, 247.0,
308 248.0, 249.0, 250.0, 251.0, 252.0, 253.0, 254.0, 255.0,
309 256.0
310};
311
312/***************************************************************/
313
314const mlib_u32 mlib_FlipAndFixRotateTable[] = {
315 0x00000000, 0x00000000, 0x00000000, 0x00000080,
316 0x00000000, 0x00008000, 0x00000000, 0x00008080,
317 0x00000000, 0x00800000, 0x00000000, 0x00800080,
318 0x00000000, 0x00808000, 0x00000000, 0x00808080,
319 0x00000000, 0x80000000, 0x00000000, 0x80000080,
320 0x00000000, 0x80008000, 0x00000000, 0x80008080,
321 0x00000000, 0x80800000, 0x00000000, 0x80800080,
322 0x00000000, 0x80808000, 0x00000000, 0x80808080,
323 0x00000080, 0x00000000, 0x00000080, 0x00000080,
324 0x00000080, 0x00008000, 0x00000080, 0x00008080,
325 0x00000080, 0x00800000, 0x00000080, 0x00800080,
326 0x00000080, 0x00808000, 0x00000080, 0x00808080,
327 0x00000080, 0x80000000, 0x00000080, 0x80000080,
328 0x00000080, 0x80008000, 0x00000080, 0x80008080,
329 0x00000080, 0x80800000, 0x00000080, 0x80800080,
330 0x00000080, 0x80808000, 0x00000080, 0x80808080,
331 0x00008000, 0x00000000, 0x00008000, 0x00000080,
332 0x00008000, 0x00008000, 0x00008000, 0x00008080,
333 0x00008000, 0x00800000, 0x00008000, 0x00800080,
334 0x00008000, 0x00808000, 0x00008000, 0x00808080,
335 0x00008000, 0x80000000, 0x00008000, 0x80000080,
336 0x00008000, 0x80008000, 0x00008000, 0x80008080,
337 0x00008000, 0x80800000, 0x00008000, 0x80800080,
338 0x00008000, 0x80808000, 0x00008000, 0x80808080,
339 0x00008080, 0x00000000, 0x00008080, 0x00000080,
340 0x00008080, 0x00008000, 0x00008080, 0x00008080,
341 0x00008080, 0x00800000, 0x00008080, 0x00800080,
342 0x00008080, 0x00808000, 0x00008080, 0x00808080,
343 0x00008080, 0x80000000, 0x00008080, 0x80000080,
344 0x00008080, 0x80008000, 0x00008080, 0x80008080,
345 0x00008080, 0x80800000, 0x00008080, 0x80800080,
346 0x00008080, 0x80808000, 0x00008080, 0x80808080,
347 0x00800000, 0x00000000, 0x00800000, 0x00000080,
348 0x00800000, 0x00008000, 0x00800000, 0x00008080,
349 0x00800000, 0x00800000, 0x00800000, 0x00800080,
350 0x00800000, 0x00808000, 0x00800000, 0x00808080,
351 0x00800000, 0x80000000, 0x00800000, 0x80000080,
352 0x00800000, 0x80008000, 0x00800000, 0x80008080,
353 0x00800000, 0x80800000, 0x00800000, 0x80800080,
354 0x00800000, 0x80808000, 0x00800000, 0x80808080,
355 0x00800080, 0x00000000, 0x00800080, 0x00000080,
356 0x00800080, 0x00008000, 0x00800080, 0x00008080,
357 0x00800080, 0x00800000, 0x00800080, 0x00800080,
358 0x00800080, 0x00808000, 0x00800080, 0x00808080,
359 0x00800080, 0x80000000, 0x00800080, 0x80000080,
360 0x00800080, 0x80008000, 0x00800080, 0x80008080,
361 0x00800080, 0x80800000, 0x00800080, 0x80800080,
362 0x00800080, 0x80808000, 0x00800080, 0x80808080,
363 0x00808000, 0x00000000, 0x00808000, 0x00000080,
364 0x00808000, 0x00008000, 0x00808000, 0x00008080,
365 0x00808000, 0x00800000, 0x00808000, 0x00800080,
366 0x00808000, 0x00808000, 0x00808000, 0x00808080,
367 0x00808000, 0x80000000, 0x00808000, 0x80000080,
368 0x00808000, 0x80008000, 0x00808000, 0x80008080,
369 0x00808000, 0x80800000, 0x00808000, 0x80800080,
370 0x00808000, 0x80808000, 0x00808000, 0x80808080,
371 0x00808080, 0x00000000, 0x00808080, 0x00000080,
372 0x00808080, 0x00008000, 0x00808080, 0x00008080,
373 0x00808080, 0x00800000, 0x00808080, 0x00800080,
374 0x00808080, 0x00808000, 0x00808080, 0x00808080,
375 0x00808080, 0x80000000, 0x00808080, 0x80000080,
376 0x00808080, 0x80008000, 0x00808080, 0x80008080,
377 0x00808080, 0x80800000, 0x00808080, 0x80800080,
378 0x00808080, 0x80808000, 0x00808080, 0x80808080,
379 0x80000000, 0x00000000, 0x80000000, 0x00000080,
380 0x80000000, 0x00008000, 0x80000000, 0x00008080,
381 0x80000000, 0x00800000, 0x80000000, 0x00800080,
382 0x80000000, 0x00808000, 0x80000000, 0x00808080,
383 0x80000000, 0x80000000, 0x80000000, 0x80000080,
384 0x80000000, 0x80008000, 0x80000000, 0x80008080,
385 0x80000000, 0x80800000, 0x80000000, 0x80800080,
386 0x80000000, 0x80808000, 0x80000000, 0x80808080,
387 0x80000080, 0x00000000, 0x80000080, 0x00000080,
388 0x80000080, 0x00008000, 0x80000080, 0x00008080,
389 0x80000080, 0x00800000, 0x80000080, 0x00800080,
390 0x80000080, 0x00808000, 0x80000080, 0x00808080,
391 0x80000080, 0x80000000, 0x80000080, 0x80000080,
392 0x80000080, 0x80008000, 0x80000080, 0x80008080,
393 0x80000080, 0x80800000, 0x80000080, 0x80800080,
394 0x80000080, 0x80808000, 0x80000080, 0x80808080,
395 0x80008000, 0x00000000, 0x80008000, 0x00000080,
396 0x80008000, 0x00008000, 0x80008000, 0x00008080,
397 0x80008000, 0x00800000, 0x80008000, 0x00800080,
398 0x80008000, 0x00808000, 0x80008000, 0x00808080,
399 0x80008000, 0x80000000, 0x80008000, 0x80000080,
400 0x80008000, 0x80008000, 0x80008000, 0x80008080,
401 0x80008000, 0x80800000, 0x80008000, 0x80800080,
402 0x80008000, 0x80808000, 0x80008000, 0x80808080,
403 0x80008080, 0x00000000, 0x80008080, 0x00000080,
404 0x80008080, 0x00008000, 0x80008080, 0x00008080,
405 0x80008080, 0x00800000, 0x80008080, 0x00800080,
406 0x80008080, 0x00808000, 0x80008080, 0x00808080,
407 0x80008080, 0x80000000, 0x80008080, 0x80000080,
408 0x80008080, 0x80008000, 0x80008080, 0x80008080,
409 0x80008080, 0x80800000, 0x80008080, 0x80800080,
410 0x80008080, 0x80808000, 0x80008080, 0x80808080,
411 0x80800000, 0x00000000, 0x80800000, 0x00000080,
412 0x80800000, 0x00008000, 0x80800000, 0x00008080,
413 0x80800000, 0x00800000, 0x80800000, 0x00800080,
414 0x80800000, 0x00808000, 0x80800000, 0x00808080,
415 0x80800000, 0x80000000, 0x80800000, 0x80000080,
416 0x80800000, 0x80008000, 0x80800000, 0x80008080,
417 0x80800000, 0x80800000, 0x80800000, 0x80800080,
418 0x80800000, 0x80808000, 0x80800000, 0x80808080,
419 0x80800080, 0x00000000, 0x80800080, 0x00000080,
420 0x80800080, 0x00008000, 0x80800080, 0x00008080,
421 0x80800080, 0x00800000, 0x80800080, 0x00800080,
422 0x80800080, 0x00808000, 0x80800080, 0x00808080,
423 0x80800080, 0x80000000, 0x80800080, 0x80000080,
424 0x80800080, 0x80008000, 0x80800080, 0x80008080,
425 0x80800080, 0x80800000, 0x80800080, 0x80800080,
426 0x80800080, 0x80808000, 0x80800080, 0x80808080,
427 0x80808000, 0x00000000, 0x80808000, 0x00000080,
428 0x80808000, 0x00008000, 0x80808000, 0x00008080,
429 0x80808000, 0x00800000, 0x80808000, 0x00800080,
430 0x80808000, 0x00808000, 0x80808000, 0x00808080,
431 0x80808000, 0x80000000, 0x80808000, 0x80000080,
432 0x80808000, 0x80008000, 0x80808000, 0x80008080,
433 0x80808000, 0x80800000, 0x80808000, 0x80800080,
434 0x80808000, 0x80808000, 0x80808000, 0x80808080,
435 0x80808080, 0x00000000, 0x80808080, 0x00000080,
436 0x80808080, 0x00008000, 0x80808080, 0x00008080,
437 0x80808080, 0x00800000, 0x80808080, 0x00800080,
438 0x80808080, 0x00808000, 0x80808080, 0x00808080,
439 0x80808080, 0x80000000, 0x80808080, 0x80000080,
440 0x80808080, 0x80008000, 0x80808080, 0x80008080,
441 0x80808080, 0x80800000, 0x80808080, 0x80800080,
442 0x80808080, 0x80808000, 0x80808080, 0x80808080,
443};
444
445/* *INDENT-ON* */
446/***************************************************************/
447