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