/// Copyright (c) 2008 Jeffrey Powers for Fluxcapacity Open Source. /// Under the MIT License, details: License.txt. namespace FluxJpeg.Core { internal class ZigZag { #region Alternate Form internal static readonly int[] ZigZagMap = { 0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63 }; //public static void UnZigZag(float[] input, float[] output) //{ // for (int i = 0; i < 64; i++) // output[ZigZagMap[i] / 8, ZigZagMap[i] % 8] = input[i]; //} #endregion public static void UnZigZag(float[] input, float[] output) { output[0] = input[0]; output[1] = input[1]; output[8] = input[2]; output[16] = input[3]; output[9] = input[4]; output[2] = input[5]; output[3] = input[6]; output[10] = input[7]; output[17] = input[8]; output[24] = input[9]; output[32] = input[10]; output[25] = input[11]; output[18] = input[12]; output[11] = input[13]; output[4] = input[14]; output[5] = input[15]; output[12] = input[16]; output[19] = input[17]; output[26] = input[18]; output[33] = input[19]; output[40] = input[20]; output[48] = input[21]; output[41] = input[22]; output[34] = input[23]; output[27] = input[24]; output[20] = input[25]; output[13] = input[26]; output[6] = input[27]; output[7] = input[28]; output[14] = input[29]; output[21] = input[30]; output[28] = input[31]; output[35] = input[32]; output[42] = input[33]; output[49] = input[34]; output[56] = input[35]; output[57] = input[36]; output[50] = input[37]; output[43] = input[38]; output[36] = input[39]; output[29] = input[40]; output[22] = input[41]; output[15] = input[42]; output[23] = input[43]; output[30] = input[44]; output[37] = input[45]; output[44] = input[46]; output[51] = input[47]; output[58] = input[48]; output[59] = input[49]; output[52] = input[50]; output[45] = input[51]; output[38] = input[52]; output[31] = input[53]; output[39] = input[54]; output[46] = input[55]; output[53] = input[56]; output[60] = input[57]; output[61] = input[58]; output[54] = input[59]; output[47] = input[60]; output[55] = input[61]; output[62] = input[62]; output[63] = input[63]; } } }