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 | |
90 | const 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 | |
127 | const 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 | |
164 | const 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 | |
201 | const 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 | |
238 | const 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 | |
276 | const 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 | |
314 | const 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 | |