public nest_tables() { this.td_width = new int[this.MAX_COLUMNS]; this.td_percent_width = new int[this.MAX_COLUMNS]; this.tdAlignColgroup = new byte[this.MAX_COLUMNS]; this.table_p = new table_params(); this.nestTblDescription = ""; }
private void TableTrace(int[,] table, table_params table_p, string message) { StreamWriter writer = new StreamWriter(@"d:\trace.txt", true); writer.WriteLine(message); for (int i = 0; i < table_p.rows; i++) { for (int j = 0; j < (table_p.cols + 1); j++) { writer.Write(table[i, j].ToString() + " "); } writer.WriteLine(); } writer.Close(); }
private void TableSpecifyCols(int[,] table_array, int[,] table_rowspan, int[,] table_colspan, table_params table_p) { int num2; int num3; bool flag = false; int num6 = 1; for (num2 = 0; num2 < table_p.rows; num2++) { for (num3 = 1; num3 < (table_array[num2, 0] + 1); num3++) { if (num6 < table_colspan[num2, num3]) { num6 = table_colspan[num2, num3]; } } } for (int i = 1; i <= num6; i++) { int num7 = 0; num2 = 0; flag = false; while (num2 < table_p.rows) { for (num3 = 1; num3 < (table_array[num2, 0] + 1); num3++) { if (i == table_colspan[num2, num3]) { if (num7 < table_array[num2, num3]) { if (i == num3) { num7 = table_array[num2, num3]; } else if ((num3 > 1) && (i > 1)) { for (int j = 1; (j < (table_rowspan[num2, num3] + 1)) && ((num2 + j) < table_p.rows); j++) { int num; int num8; if ((table_colspan[num2, num3] - table_colspan[num2, num3 - 1]) == 1) { num8 = table_colspan[num2, num3]; } else { num8 = table_colspan[num2, num3] - table_colspan[num2, num3 - 1]; } int num9 = i; bool flag2 = false; bool flag3 = false; for (num = 1; num < (table_colspan[num2 + j, 0] + 1); num++) { if ((table_colspan[num2 + j, num] == num8) && !flag2) { num8 = num; flag2 = true; } if ((table_colspan[num2 + j, num] == num9) && !flag3) { num9 = num; flag3 = true; } } if (flag2 && flag3) { int num10 = 0; int num11 = 0; for (num = num8; num <= num9; num++) { if (table_array[num2 + j, num] == 0) { num10++; } num11 += table_array[num2 + j, num]; } if ((num10 > 0) && ((num9 - num8) >= 0)) { if (table_array[num2, num3] > num11) { num11 = (table_array[num2, num3] - num11) / num10; for (num = num8; num <= num9; num++) { if (table_array[num2 + j, num] == 0) { table_array[num2 + j, num] = num11; } } } else { if ((num9 - num8) == 0) { num11 = table_array[num2, num3]; } else { num11 = table_array[num2, num3] / (num9 - num8); } for (num = num8; num <= num9; num++) { table_array[num2 + j, num] = num11; } } } } } } } if (table_array[num2, num3] == 0) { flag = true; } } } num2++; } if ((num7 > 0) && flag) { for (num2 = 0; num2 < table_p.rows; num2++) { for (num3 = 1; num3 < (table_array[num2, 0] + 1); num3++) { if ((i == table_colspan[num2, num3]) && (table_array[num2, num3] == 0)) { table_array[num2, num3] = num7; } } } } } }
private int table_translate(int num, table_params table_p, int percent_w) { int num2 = 0; if (table_p.table_width < 1) { if (table_p.percent_width == 1) { table_p.table_width = 100; } else { table_p.table_width = this.SCREEN_W_DEF; } } if (table_p.percent_width == 0) { if (percent_w != 0) { return ((num * this.TBLEN) / 100); } num2 = (num * this.TBLEN) / table_p.table_width; if (num2 > this.TBLEN) { num2 = this.TBLEN - 100; } return num2; } if (percent_w != 0) { return ((num * this.TBLEN) / 100); } return ((num * this.TBLEN) / this.SCREEN_W_DEF); }
private void table_sort(int[,] table_array, table_params table_p) { for (int i = 0; i < table_p.rows; i++) { int num5 = table_array[i, 0]; for (int j = 1; j < (table_p.cols + 1); j++) { int num; int num4 = table_array[i, j]; for (num = 0; num < table_p.rows; num++) { if ((num4 < table_array[num, j]) && (table_array[num, 0] == num5)) { num4 = table_array[num, j]; } } for (num = 0; num < table_p.rows; num++) { if (table_array[num, 0] == num5) { table_array[num, j] = num4; } } } } }
private table_types table_getsize(ByteClass buf, int posStartBuf, int max, table_params table_p) { table_types _types = table_types.TABLE_UNCLOSED; int index = posStartBuf; int num2 = 0; table_p.rows = 0; table_p.cols = 0; int num3 = 1; int percent = 0; int colspan = 0; int rowspan = 0; int num7 = 0; bool flag = false; bool flag2 = false; index++; while (index < max) { if ((((((buf.b[index] == 60) && (buf.b[index + 1] == 0x2f)) && ((buf.b[index + 2] == 0x74) || (buf.b[index + 2] == 0x54))) && ((buf.b[index + 3] == 0x61) || (buf.b[index + 3] == 0x41))) && (((buf.b[index + 4] == 0x62) || (buf.b[index + 4] == 0x42)) && ((buf.b[index + 5] == 0x6c) || (buf.b[index + 5] == 0x4c)))) && (((buf.b[index + 6] == 0x65) || (buf.b[index + 6] == 0x45)) && (buf.b[index + 7] == 0x3e))) { _types = table_types.TABLE_NORMAL; break; } if (((((buf.b[index] == 60) && ((buf.b[index + 1] == 0x74) || (buf.b[index + 1] == 0x54))) && ((buf.b[index + 2] == 0x61) || (buf.b[index + 2] == 0x41))) && (((buf.b[index + 3] == 0x62) || (buf.b[index + 3] == 0x42)) && ((buf.b[index + 4] == 0x6c) || (buf.b[index + 4] == 0x4c)))) && (((buf.b[index + 5] == 0x65) || (buf.b[index + 5] == 0x45)) && ((buf.b[index + 6] == 0x3e) || this.IS_DELIMITER(buf.b[index + 6])))) { index += 6; num3++; while ((num3 > 1) && (index < max)) { if ((((((buf.b[index] == 60) && (buf.b[index + 1] == 0x2f)) && ((buf.b[index + 2] == 0x74) || (buf.b[index + 2] == 0x54))) && ((buf.b[index + 3] == 0x61) || (buf.b[index + 3] == 0x41))) && (((buf.b[index + 4] == 0x62) || (buf.b[index + 4] == 0x42)) && ((buf.b[index + 5] == 0x6c) || (buf.b[index + 5] == 0x4c)))) && (((buf.b[index + 6] == 0x65) || (buf.b[index + 6] == 0x45)) && (buf.b[index + 7] == 0x3e))) { num3--; index += 6; } else if (((((buf.b[index] == 60) && ((buf.b[index + 1] == 0x74) || (buf.b[index + 1] == 0x54))) && ((buf.b[index + 2] == 0x61) || (buf.b[index + 2] == 0x41))) && (((buf.b[index + 3] == 0x62) || (buf.b[index + 3] == 0x42)) && ((buf.b[index + 4] == 0x6c) || (buf.b[index + 4] == 0x4c)))) && (((buf.b[index + 5] == 0x65) || (buf.b[index + 5] == 0x45)) && ((buf.b[index + 6] == 0x3e) || this.IS_DELIMITER(buf.b[index + 6])))) { num3++; } index++; } } if (((((buf.b[index] == 60) && ((buf.b[index + 1] == 0x74) || (buf.b[index + 1] == 0x54))) && ((buf.b[index + 2] == 0x68) || (buf.b[index + 2] == 0x48))) && (((buf.b[index + 3] == 0x65) || (buf.b[index + 3] == 0x45)) && ((buf.b[index + 4] == 0x61) || (buf.b[index + 4] == 0x41)))) && (((buf.b[index + 5] == 100) || (buf.b[index + 5] == 0x44)) && (buf.b[index + 6] == 0x3e))) { table_p.rows++; if (num2 < (table_p.cols + num7)) { num2 = table_p.cols + num7; } table_p.cols = 0; num7 = 0; flag = true; index += 6; } else if ((((((buf.b[index] == 60) && (buf.b[index + 1] == 0x2f)) && ((buf.b[index + 2] == 0x74) || (buf.b[index + 2] == 0x54))) && ((buf.b[index + 3] == 0x68) || (buf.b[index + 3] == 0x48))) && (((buf.b[index + 4] == 0x65) || (buf.b[index + 4] == 0x45)) && ((buf.b[index + 5] == 0x61) || (buf.b[index + 5] == 0x41)))) && (((buf.b[index + 6] == 100) || (buf.b[index + 6] == 0x44)) && (buf.b[index + 7] == 0x3e))) { index += 7; flag = false; } else { if ((((buf.b[index] == 60) && ((buf.b[index + 1] == 0x74) || (buf.b[index + 1] == 0x54))) && ((buf.b[index + 2] == 0x72) || (buf.b[index + 2] == 0x52))) && ((buf.b[index + 3] == 0x3e) || this.IS_DELIMITER(buf.b[index + 3]))) { if (flag && (table_p.cols == 0)) { flag2 = true; flag = false; goto Label_077A; } table_p.rows++; if (num2 < (table_p.cols + num7)) { num2 = table_p.cols + num7; } table_p.cols = 0; num7 = 0; flag = false; flag2 = true; } if (((((buf.b[index] == 60) && (buf.b[index + 1] == 0x2f)) && ((buf.b[index + 2] == 0x74) || (buf.b[index + 2] == 0x54))) && ((buf.b[index + 3] == 0x72) || (buf.b[index + 3] == 0x52))) && (buf.b[index + 4] == 0x3e)) { index += 4; if (!flag2 && (table_p.cols > 0)) { table_p.rows++; if (num2 < (table_p.cols + num7)) { num2 = table_p.cols + num7; } table_p.cols = 0; num7 = 0; } flag2 = false; } else { if ((((buf.b[index] == 60) && ((buf.b[index + 1] == 0x74) || (buf.b[index + 1] == 0x54))) && (((buf.b[index + 2] == 100) || (buf.b[index + 2] == 0x44)) || ((buf.b[index + 2] == 0x68) || (buf.b[index + 2] == 0x48)))) && ((buf.b[index + 3] == 0x3e) || this.IS_DELIMITER(buf.b[index + 3]))) { colspan = 0; int num8 = -1111; this.get_width(buf, index, max, ref percent, ref colspan, ref rowspan, null, num8, ref num8, null, ref num8, ref num8); if (colspan > 1) { num7 += colspan - 1; } table_p.cols++; } if (buf.b[index] == 60) { while ((index < max) && (buf.b[index] != 0x3e)) { index++; } } } } Label_077A: index++; } if (num2 > table_p.cols) { table_p.cols = num2; } return _types; }
private void table_clear(int[,] table_array, table_params table_p, int num) { for (int i = 0; i < table_p.rows; i++) { for (int j = 0; j < (table_p.cols + 1); j++) { table_array[i, j] = num; } } }
private void table_check_width(int[,] table_array, int[,] table_symbols, int[,] table_images, int[,] nested_level, int[,] table_colspan, table_params table_p, int[] row_nulls, int[] rows_empty, bool use_rows_empty) { int num; int num5; int num9 = 1; int num10 = 1; for (num = 0; num < table_p.rows; num++) { int num3; int num7 = 0; num5 = 0; for (num3 = 1; num3 < (table_array[num, 0] + 1); num3++) { if ((table_array[num, num3] >= this.TBLEN) && (table_array[num, 0] != 1)) { num7++; } else { num5 += table_array[num, num3]; } } if (num7 > 0) { int num8 = (this.TBLEN - num5) / num7; if (num8 <= 0) { num8 = 1; } for (num3 = 1; num3 < (table_array[num, 0] + 1); num3++) { if ((table_array[num, num3] >= this.TBLEN) && (table_array[num, 0] != 1)) { table_array[num, num3] = num8; } } } } for (int i = 0; i < table_p.rows; i++) { int num4 = 0; num5 = 0; for (num = 1; num < (table_array[i, 0] + 1); num++) { if (table_array[i, num] == 0) { num4++; } num5 += table_array[i, num]; } if (use_rows_empty) { rows_empty[i] = 0; rows_empty[i] = num4; } if (num4 == table_array[i, 0]) { row_nulls[table_array[i, 0]] = 1; } if (num4 > 0) { int num6; if (num5 < this.TBLEN) { num6 = (this.TBLEN - num5) / num4; } else { num6 = (num5 - this.TBLEN) / num4; } for (num = 1; num < (table_array[i, 0] + 1); num++) { if (table_array[i, num] == 0) { num9 = table_colspan[i, num]; if (num > 1) { num9 = table_colspan[i, num] - table_colspan[i, num - 1]; } num10 = this.TBLEN / table_p.cols; num10 *= num9; if (((table_images[i, num] == 0) && (table_symbols[i, num] == 0)) && (table_array[i, num] == 0)) { table_array[i, num] = 1; } else if ((table_images[i, num] > 0) && (table_symbols[i, num] == 0)) { table_array[i, num] = table_images[i, num]; } else if (table_images[i, num] > 0) { if (num10 < table_images[i, num]) { table_array[i, num] = table_images[i, num]; } else { table_array[i, num] = num10; } } } } num4 = 0; num9 = 1; num5 = 0; for (num = 1; num < (table_array[i, 0] + 1); num++) { if (table_array[i, num] == 0) { num4++; if (num > 1) { num9 += table_colspan[i, num] - table_colspan[i, num - 1]; } } num5 += table_array[i, num]; } if (num4 > 0) { if (num5 < this.TBLEN) { num6 = (this.TBLEN - num5) / num4; num10 = (this.TBLEN - num5) / num9; } else { num6 = (num5 - this.TBLEN) / num4; num10 = (num5 - this.TBLEN) / num9; } for (num = 1; num < (table_array[i, 0] + 1); num++) { if (table_array[i, num] == 0) { num9 = table_colspan[i, num]; if (num > 1) { num9 = table_colspan[i, num] - table_colspan[i, num - 1]; } num6 = num10 * num9; table_array[i, num] = num6; } } } } } }
private void table_analyse(ByteClass buf, int posStartBuf, int max, int[,] table_array, int[,] table_symbols, int[,] table_map, int[,] table_colspan, int[,] table_rowspan, int[,] table_images, int[,] table_width, int[,] table_colbg, int[,] table_valign, CSS_params CSS_param, table_params table_p, ArrayList color_list, int color_list_num, ByteClass img_folder, int TBLEN_MAX, bool hieroglyph, byte[] tdAlignColgroup) { int num; int num2; int num11; int num16; int num17; int num18; int[,] numArray8; IntPtr ptr; bool flag = true; int index = posStartBuf; int percent = 0; int num5 = 0; int num6 = 0; int colspan = 0; int rowspan = 0; int num9 = 0; int num10 = 0; int num12 = TBLEN_MAX; int num13 = 0; int num14 = 0; int num15 = 0; int[] numArray = new int[2]; ByteClass class2 = new ByteClass(0x20); float num19 = 1f; int rows = 1; int[] numArray2 = new int[this.MAX_COLUMNS]; int[] numArray3 = new int[this.MAX_COLUMNS]; int[] numArray4 = new int[this.MAX_COLUMNS]; int[] numArray5 = new int[this.MAX_COLUMNS]; bool flag2 = false; bool flag3 = false; int bgcolor = 0; int valign = 0; int[] numArray6 = null; bool flag4 = false; if (numArray6 != null) { flag4 = true; } int[,] numArray7 = new int[table_p.rows, table_p.cols + 2]; bool flag5 = false; bool flag6 = false; bool flag7 = false; int num23 = 0; if (numArray7 != null) { flag5 = true; } if (flag5) { for (num = 0; num < table_p.rows; num++) { for (num2 = 0; num2 < (table_p.cols + 2); num2++) { numArray7[num, num2] = 0; } } } table_p.table_width = this.get_width(buf, posStartBuf, max, ref percent, ref colspan, ref rowspan, color_list, color_list_num, ref bgcolor, CSS_param, ref valign, ref table_p.tableAlign); table_p.percent_width = percent; num = 0; num2 = 0; for (num11 = 0; num11 < this.MAX_COLUMNS; num11++) { tdAlignColgroup[num11] = 0; } this.table_clear(table_array, table_p, 0); this.table_clear(table_symbols, table_p, 0); this.table_clear(table_colspan, table_p, 1); this.table_clear(table_rowspan, table_p, 1); this.table_clear(table_images, table_p, 0); this.table_clear(table_width, table_p, 0); this.table_clear(table_colbg, table_p, 0); this.table_clear(table_valign, table_p, this.VALIGN_TOP); this.table_clear(table_map, table_p, 0); index++; while (index < max) { if ((((((buf.b[index] == 60) && (buf.b[index + 1] == 0x2f)) && ((buf.b[index + 2] == 0x74) || (buf.b[index + 2] == 0x54))) && ((buf.b[index + 3] == 0x61) || (buf.b[index + 3] == 0x41))) && (((buf.b[index + 4] == 0x62) || (buf.b[index + 4] == 0x42)) && ((buf.b[index + 5] == 0x6c) || (buf.b[index + 5] == 0x4c)))) && (((buf.b[index + 6] == 0x65) || (buf.b[index + 6] == 0x45)) && (buf.b[index + 7] == 0x3e))) { if (num2 > 0) { table_array[num, 0] = num2; table_colspan[num, 0] = num2; table_rowspan[num, 0] = num2; table_symbols[num, 0] = num2; table_width[num, 0] = num2; table_images[num, 0] = num2; table_map[num, 0] = num2; } break; } if (((((buf.b[index] == 60) && ((buf.b[index + 1] == 0x74) || (buf.b[index + 1] == 0x54))) && ((buf.b[index + 2] == 0x61) || (buf.b[index + 2] == 0x41))) && (((buf.b[index + 3] == 0x62) || (buf.b[index + 3] == 0x42)) && ((buf.b[index + 4] == 0x6c) || (buf.b[index + 4] == 0x4c)))) && (((buf.b[index + 5] == 0x65) || (buf.b[index + 5] == 0x45)) && ((buf.b[index + 6] == 0x3e) || this.IS_DELIMITER(buf.b[index + 6])))) { IntPtr ptr2; index += 6; rows++; if (flag5) { (numArray8 = numArray7)[(int)(ptr = (IntPtr)num), (int)(ptr2 = (IntPtr)num2)] = numArray8[(int)ptr, (int)ptr2] + 1; } if (this.IS_DELIMITER(buf.b[index])) { int align = -1111; num13 = this.get_width(buf, index, max, ref percent, ref colspan, ref rowspan, color_list, color_list_num, ref bgcolor, CSS_param, ref valign, ref align); if (num2 <= 0) { num2 = 1; } if (percent == 0) { num13 = this.table_translate_width(num13); if (table_array[num, num2] < num13) { table_array[num, num2] = num13; } } else { num13 = this.table_translate(num13, table_p, percent); if (table_array[num, num2] < num13) { table_array[num, num2] = num13; } } } while ((buf.b[index] != 0x3e) && (index < max)) { index++; } if (buf.b[index] == 0x3e) { index++; } num14 = 0; num15 = 0; while ((rows > 1) && (index < max)) { if ((((((buf.b[index] == 60) && (buf.b[index + 1] == 0x2f)) && ((buf.b[index + 2] == 0x74) || (buf.b[index + 2] == 0x54))) && ((buf.b[index + 3] == 0x61) || (buf.b[index + 3] == 0x41))) && (((buf.b[index + 4] == 0x62) || (buf.b[index + 4] == 0x42)) && ((buf.b[index + 5] == 0x6c) || (buf.b[index + 5] == 0x4c)))) && (((buf.b[index + 6] == 0x65) || (buf.b[index + 6] == 0x45)) && (buf.b[index + 7] == 0x3e))) { rows--; index += 6; } else if (((((buf.b[index] == 60) && ((buf.b[index + 1] == 0x74) || (buf.b[index + 1] == 0x54))) && ((buf.b[index + 2] == 0x61) || (buf.b[index + 2] == 0x41))) && (((buf.b[index + 3] == 0x62) || (buf.b[index + 3] == 0x42)) && ((buf.b[index + 4] == 0x6c) || (buf.b[index + 4] == 0x4c)))) && (((buf.b[index + 5] == 0x65) || (buf.b[index + 5] == 0x45)) && ((buf.b[index + 6] == 0x3e) || this.IS_DELIMITER(buf.b[index + 6])))) { rows++; if (flag5) { (numArray8 = numArray7)[(int)(ptr = (IntPtr)num), (int)(ptr2 = (IntPtr)num2)] = numArray8[(int)ptr, (int)ptr2] + 1; } if (this.IS_DELIMITER(buf.b[index + 6])) { int num25 = -1111; num13 = this.get_width(buf, index, max, ref percent, ref colspan, ref rowspan, color_list, color_list_num, ref bgcolor, CSS_param, ref valign, ref num25); if (percent == 0) { num13 = this.table_translate_width(num13); if (table_array[num, num2] < num13) { table_array[num, num2] = num13; } } else { num13 = this.table_translate(num13, table_p, percent); if (table_array[num, num2] < num13) { table_array[num, num2] = num13; } } } } else if ((((buf.b[index] == 60) && ((buf.b[index + 1] == 0x74) || (buf.b[index + 1] == 0x54))) && (((buf.b[index + 2] == 100) || (buf.b[index + 2] == 0x44)) || ((buf.b[index + 2] == 0x68) || (buf.b[index + 2] == 0x48)))) && ((buf.b[index + 3] == 0x3e) || this.IS_DELIMITER(buf.b[index + 3]))) { num14 = 0; while ((buf.b[index] != 0x3e) && (index < max)) { index++; } } else if (((((buf.b[index] == 60) && (buf.b[index + 1] == 0x2f)) && ((buf.b[index + 2] == 0x74) || (buf.b[index + 2] == 0x54))) && (((buf.b[index + 3] == 100) || (buf.b[index + 3] == 0x44)) || ((buf.b[index + 3] == 0x68) || (buf.b[index + 3] == 0x48)))) && (buf.b[index + 4] == 0x3e)) { if (num15 < num14) { num15 = num14; } num14 = 0; while ((buf.b[index] != 0x3e) && (index < max)) { index++; } } else if ((((buf.b[index] == 60) && ((buf.b[index + 1] == 0x62) || (buf.b[index + 1] == 0x42))) && ((buf.b[index + 2] == 0x72) || (buf.b[index + 2] == 0x52))) && ((buf.b[index + 3] == 0x3e) || this.IS_DELIMITER(buf.b[index + 3]))) { if (num14 > num15) { num15 = num14; } num14 = 0; while ((buf.b[index] != 0x3e) && (index < max)) { index++; } } else if (buf.b[index] == 60) { while ((buf.b[index] != 0x3e) && (index < max)) { index++; } } else if (buf.b[index] == 0x26) { index += this.special_symbols_rtf(buf, index, max, class2, false); } else if (this.IS_DELIMITER(buf.b[index])) { if (num14 > num15) { num15 = num14; } num14 = 0; } else if (buf.b[index] >= 0x20) { num14++; } index++; } if (num6 < num15) { num6 = num15; } if (num6 < num14) { num6 = num14; } } else if (((((buf.b[index] == 60) && ((buf.b[index + 1] == 0x74) || (buf.b[index + 1] == 0x54))) && ((buf.b[index + 2] == 0x68) || (buf.b[index + 2] == 0x48))) && (((buf.b[index + 3] == 0x65) || (buf.b[index + 3] == 0x45)) && ((buf.b[index + 4] == 0x61) || (buf.b[index + 4] == 0x41)))) && (((buf.b[index + 5] == 100) || (buf.b[index + 5] == 0x44)) && (buf.b[index + 6] == 0x3e))) { if (flag3) { if (num2 == 0) { num2 = 1; } table_array[num, 0] = num2; table_colspan[num, 0] = num2; table_rowspan[num, 0] = num2; table_symbols[num, 0] = num2; table_width[num, 0] = num2; table_images[num, 0] = num2; table_map[num, 0] = num2; if (flag5) { numArray7[num, 0] = num2; } num++; num2 = 0; } flag3 = true; flag6 = true; } else if ((((buf.b[index] == 60) && ((buf.b[index + 1] == 0x74) || (buf.b[index + 1] == 0x54))) && ((buf.b[index + 2] == 0x72) || (buf.b[index + 2] == 0x52))) && ((buf.b[index + 3] == 0x3e) || this.IS_DELIMITER(buf.b[index + 3]))) { if (flag6 && (num2 == 0)) { flag6 = false; flag3 = true; } else { if (flag3 || (num2 == table_p.cols)) { if (num2 == 0) { num2 = 1; } table_array[num, 0] = num2; table_colspan[num, 0] = num2; table_rowspan[num, 0] = num2; table_symbols[num, 0] = num2; table_width[num, 0] = num2; table_images[num, 0] = num2; table_map[num, 0] = num2; if (flag5) { numArray7[num, 0] = num2; } num++; num2 = 0; } flag3 = true; flag6 = false; } } else if (((((buf.b[index] == 60) && (buf.b[index + 1] == 0x2f)) && ((buf.b[index + 2] == 0x74) || (buf.b[index + 2] == 0x54))) && ((buf.b[index + 3] == 0x72) || (buf.b[index + 3] == 0x52))) && (buf.b[index + 4] == 0x3e)) { if (flag3 || (num2 == table_p.cols)) { table_array[num, 0] = num2; table_colspan[num, 0] = num2; table_rowspan[num, 0] = num2; table_symbols[num, 0] = num2; table_width[num, 0] = num2; table_colbg[num, 0] = num2; table_valign[num, 0] = num2; table_images[num, 0] = num2; table_map[num, 0] = num2; if (flag5) { numArray7[num, 0] = num2; } num++; num2 = 0; while ((buf.b[index] != 0x3e) && (index < max)) { index++; } } else if (!flag3 && (num2 > 0)) { table_array[num, 0] = num2; table_colspan[num, 0] = num2; table_rowspan[num, 0] = num2; table_symbols[num, 0] = num2; table_width[num, 0] = num2; table_colbg[num, 0] = num2; table_valign[num, 0] = num2; table_images[num, 0] = num2; table_map[num, 0] = num2; if (flag5) { numArray7[num, 0] = num2; } num++; num2 = 0; while ((buf.b[index] != 0x3e) && (index < max)) { index++; } } flag3 = false; if (num == table_p.rows) { break; } } else if ((((buf.b[index] == 60) && ((buf.b[index + 1] == 0x74) || (buf.b[index + 1] == 0x54))) && (((buf.b[index + 2] == 100) || (buf.b[index + 2] == 0x44)) || ((buf.b[index + 2] == 0x68) || (buf.b[index + 2] == 0x48)))) && ((buf.b[index + 3] == 0x3e) || this.IS_DELIMITER(buf.b[index + 3]))) { num2++; if (this.IS_DELIMITER(buf.b[index + 3])) { index += 3; int num26 = -1111; table_array[num, num2] = this.get_width(buf, index, max, ref percent, ref colspan, ref rowspan, color_list, color_list_num, ref bgcolor, CSS_param, ref valign, ref num26); table_colspan[num, num2] = colspan; table_rowspan[num, num2] = rowspan; table_colbg[num, num2] = bgcolor; table_valign[num, num2] = valign; table_array[num, num2] = this.table_translate(table_array[num, num2], table_p, percent); } num5 = 0; num6 = 0; while ((buf.b[index] != 0x3e) && (index < max)) { index++; } if (flag) { table_images[num, num2] = this.get_width_img(buf, index, max, img_folder); } } else if (((((buf.b[index] == 60) && (buf.b[index + 1] == 0x2f)) && ((buf.b[index + 2] == 0x74) || (buf.b[index + 2] == 0x54))) && (((buf.b[index + 3] == 100) || (buf.b[index + 3] == 0x44)) || ((buf.b[index + 3] == 0x68) || (buf.b[index + 3] == 0x48)))) && (buf.b[index + 4] == 0x3e)) { if (num6 > num5) { num5 = num6; } table_symbols[num, num2] = num5; num5 = 0; num6 = 0; while ((buf.b[index] != 0x3e) && (index < max)) { index++; } } else if ((((buf.b[index] == 60) && ((buf.b[index + 1] == 0x62) || (buf.b[index + 1] == 0x42))) && ((buf.b[index + 2] == 0x72) || (buf.b[index + 2] == 0x52))) && ((buf.b[index + 3] == 0x3e) || this.IS_DELIMITER(buf.b[index + 3]))) { if (num5 > num6) { num6 = num5; } num5 = 0; while ((buf.b[index] != 0x3e) && (index < max)) { index++; } } else if (((((buf.b[index] == 60) && ((buf.b[index + 1] == 0x63) || (buf.b[index + 1] == 0x43))) && ((buf.b[index + 2] == 0x6f) || (buf.b[index + 2] == 0x4f))) && (((buf.b[index + 3] == 0x6c) || (buf.b[index + 3] == 0x4c)) && ((buf.b[index + 4] == 0x67) || (buf.b[index + 4] == 0x47)))) && ((((buf.b[index + 5] == 0x72) || (buf.b[index + 5] == 0x52)) && ((buf.b[index + 6] == 0x6f) || (buf.b[index + 6] == 0x4f))) && ((((buf.b[index + 7] == 0x75) || (buf.b[index + 7] == 0x55)) && ((buf.b[index + 8] == 0x70) || (buf.b[index + 8] == 80))) && (buf.b[index + 9] == 0x3e)))) { flag7 = true; } else if (((((num23 < (this.MAX_COLUMNS - 1)) && (buf.b[index] == 60)) && ((buf.b[index + 1] == 0x63) || (buf.b[index + 1] == 0x43))) && ((buf.b[index + 2] == 0x6f) || (buf.b[index + 2] == 0x4f))) && (((buf.b[index + 3] == 0x6c) || (buf.b[index + 3] == 0x4c)) && ((buf.b[index + 4] == 0x20) && flag7))) { index += 3; while ((buf.b[index] != 0x3e) && (index < max)) { if (buf.b[index] == 60) { index--; break; } if (((((buf.b[index] == 0x63) || (buf.b[index] == 0x43)) && ((buf.b[index + 1] == 0x65) || (buf.b[index + 1] == 0x45))) && (((buf.b[index + 2] == 110) || (buf.b[index + 2] == 0x4e)) && ((buf.b[index + 3] == 0x74) || (buf.b[index + 3] == 0x54)))) && (((buf.b[index + 4] == 0x65) || (buf.b[index + 4] == 0x45)) && ((buf.b[index + 5] == 0x72) || (buf.b[index + 5] == 0x52)))) { tdAlignColgroup[num23++] = 0x63; } if (((((buf.b[index] == 0x6d) || (buf.b[index] == 0x4d)) && ((buf.b[index + 1] == 0x69) || (buf.b[index + 1] == 0x49))) && (((buf.b[index + 2] == 100) || (buf.b[index + 2] == 0x44)) && ((buf.b[index + 3] == 100) || (buf.b[index + 3] == 0x44)))) && (((buf.b[index + 4] == 0x6c) || (buf.b[index + 4] == 0x4c)) && ((buf.b[index + 5] == 0x65) || (buf.b[index + 5] == 0x45)))) { tdAlignColgroup[num23++] = 0x63; } if ((((buf.b[index] == 0x6c) || (buf.b[index] == 0x4c)) && ((buf.b[index + 1] == 0x65) || (buf.b[index + 1] == 0x45))) && (((buf.b[index + 2] == 0x66) || (buf.b[index + 2] == 70)) && ((buf.b[index + 3] == 0x74) || (buf.b[index + 3] == 0x54)))) { tdAlignColgroup[num23++] = 0x6c; } if (((((buf.b[index] == 0x72) || (buf.b[index] == 0x52)) && ((buf.b[index + 1] == 0x69) || (buf.b[index + 1] == 0x49))) && (((buf.b[index + 2] == 0x67) || (buf.b[index + 2] == 0x47)) && ((buf.b[index + 3] == 0x68) || (buf.b[index + 3] == 0x48)))) && ((buf.b[index + 4] == 0x74) || (buf.b[index + 4] == 0x54))) { tdAlignColgroup[num23++] = 0x72; } if (((((buf.b[index] == 0x6a) || (buf.b[index] == 0x4a)) && ((buf.b[index + 1] == 0x75) || (buf.b[index + 1] == 0x55))) && (((buf.b[index + 2] == 0x73) || (buf.b[index + 2] == 0x53)) && ((buf.b[index + 3] == 0x74) || (buf.b[index + 3] == 0x54)))) && ((((buf.b[index + 4] == 0x69) || (buf.b[index + 4] == 0x49)) && ((buf.b[index + 5] == 0x66) || (buf.b[index + 5] == 70))) && ((buf.b[index + 6] == 0x79) || (buf.b[index + 6] == 0x59)))) { tdAlignColgroup[num23++] = 0x6a; } index++; } } else if ((buf.b[index] == 60) || (buf.b[index - 1] == 60)) { while ((buf.b[index] != 0x3e) && (index < max)) { index++; } } else if (buf.b[index] == 0x26) { index += this.special_symbols_rtf(buf, index, max, class2, false); num5++; } else if (this.IS_DELIMITER(buf.b[index])) { if (num5 > num6) { num6 = num5; } num5 = 0; } else if ((buf.b[index] >= 0x20) && ((buf.b[index] <= 0x80) || !hieroglyph)) { num5++; } index++; } num10 = 0; int num27 = 0; int num28 = 0; int num29 = 0; int num30 = 0; int num31 = 0; int num32 = 0; int num33 = 0; int num34 = 0; int num35 = 0; int num36 = 0; int num37 = 0; int num38 = 0; for (num = 0; num < table_p.rows; num++) { for (num2 = 1; num2 < (table_colspan[num, 0] + 1); num2++) { if (table_rowspan[num, num2] > 1) { rowspan = table_rowspan[num, num2]; for (num17 = 1; (num17 < rowspan) && ((num + num17) < table_p.rows); num17++) { (numArray8 = table_colspan)[(int)(ptr = (IntPtr)(num + num17)), 0] = numArray8[(int)ptr, 0] + 1; num18 = num2; colspan = table_colspan[num, num2]; while (num18 < (table_colspan[num + num17, 0] + 1)) { num10 = table_colspan[num + num17, num18]; table_colspan[num + num17, num18] = colspan; colspan = num10; num18++; } } } } } for (num = 0; num < this.MAX_COLUMNS; num++) { numArray2[num] = 0; } for (num = 0; num < table_p.rows; num++) { if (numArray2[table_colspan[num, 0]] > 0) { num2 = numArray2[table_colspan[num, 0]] - 1; for (index = 1; index < (table_p.cols + 1); index++) { table_colspan[num, index] = table_colspan[num2, index]; } } else { num16 = 0; for (num2 = 1; num2 < (table_p.cols + 1); num2++) { num16 += table_colspan[num, num2]; table_colspan[num, num2] = num16; } } } for (num = 0; num < table_p.rows; num++) { for (num2 = 1; num2 < (table_colspan[num, 0] + 1); num2++) { if (table_rowspan[num, num2] > 1) { rowspan = table_rowspan[num, num2]; table_map[num, num2] = this.CLVMGF; for (num17 = 1; (num17 < rowspan) && ((num + num17) < table_p.rows); num17++) { table_rowspan[num + num17, 0] = table_colspan[num + num17, 0]; table_map[num + num17, 0] = table_colspan[num + num17, 0]; table_images[num + num17, 0] = table_colspan[num + num17, 0]; table_array[num + num17, 0] = table_colspan[num + num17, 0]; table_symbols[num + num17, 0] = table_colspan[num + num17, 0]; table_width[num + num17, 0] = table_colspan[num + num17, 0]; table_colbg[num + num17, 0] = table_colspan[num + num17, 0]; table_valign[num + num17, 0] = table_colspan[num + num17, 0]; if (flag5) { numArray7[num + num17, 0] = table_colspan[num + num17, 0]; num33 = numArray7[num, num2]; } num16 = table_colspan[num, num2]; num18 = num2; while (num18 < (table_colspan[num + num17, 0] + 1)) { if (num16 == table_colspan[num + num17, num18]) { break; } num18++; } colspan = table_colspan[num, num2]; num27 = table_array[num, num2]; num29 = table_symbols[num, num2]; num31 = table_images[num, num2]; num35 = table_colbg[num, num2]; num37 = table_valign[num, num2]; while (num18 < (table_colspan[num + num17, 0] + 1)) { num28 = table_array[num + num17, num18]; table_array[num + num17, num18] = num27; num27 = num28; num30 = table_symbols[num + num17, num18]; table_symbols[num + num17, num18] = num29; num29 = num30; num32 = table_images[num + num17, num18]; table_images[num + num17, num18] = num31; num31 = num32; num36 = table_colbg[num + num17, num18]; table_colbg[num + num17, num18] = num35; num35 = num36; num38 = table_valign[num + num17, num18]; table_valign[num + num17, num18] = num37; num37 = num38; if (flag5) { num34 = numArray7[num + num17, num18]; numArray7[num + num17, num18] = num33; num33 = num34; } num18++; } } } } } for (num = 0; num < table_p.rows; num++) { if (table_array[num, 0] == 0) { table_array[num, 0] = 1; table_colspan[num, 0] = 1; table_rowspan[num, 0] = 1; table_symbols[num, 0] = 1; table_width[num, 0] = 1; table_images[num, 0] = 1; table_colbg[num, 0] = 1; table_valign[num, 0] = 1; table_map[num, 0] = 1; } } for (num = 0; num < table_p.rows; num++) { for (num2 = 1; num2 < (table_rowspan[num, 0] + 1); num2++) { if (table_rowspan[num, num2] > 1) { rows = table_rowspan[num, num2]; if ((table_p.rows - rows) <= 0) { rows = table_p.rows; } if (table_p.rows != 1) { num16 = table_colspan[num, num2]; if (table_map[num, num2] != this.CLVMRG) { table_map[num, num2] = this.CLVMGF; } for (num17 = 1; (num17 < rows) && ((num + num17) < table_p.rows); num17++) { for (num18 = 1; num18 < (table_p.cols + 1); num18++) { if (num16 == table_colspan[num + num17, num18]) { table_map[num + num17, num18] = this.CLVMRG; } } } } } } } for (num = 0; num < this.MAX_COLUMNS; num++) { numArray2[num] = 0; numArray3[num] = 0; numArray4[num] = 0; numArray5[num] = 0; } for (num = 0; num < table_p.rows; num++) { colspan = 0; for (num2 = 1; num2 < (table_array[num, 0] + 1); num2++) { if (table_array[num, num2] != 0) { break; } colspan++; } if (table_array[num, 0] == colspan) { numArray3[table_array[num, 0]] = 1; } } for (num = 0; num < table_p.rows; num++) { for (num2 = 1; num2 < (table_p.cols + 1); num2++) { if (table_array[num, num2] == 0) { table_width[num, num2] = 1; } table_rowspan[num, num2] = table_map[num, num2]; table_map[num, num2] = 0; } } this.table_sort(table_array, table_p); this.table_sort(table_symbols, table_p); this.TableSpecifyCols(table_array, table_rowspan, table_colspan, table_p); for (num = 0; num < this.MAX_COLUMNS; num++) { numArray2[num] = 0; } for (num = 0; num < table_p.rows; num++) { if (numArray2[table_symbols[num, 0]] > 0) { num2 = numArray2[table_symbols[num, 0]] - 1; for (index = 1; index < (table_p.cols + 1); index++) { table_symbols[num, index] = table_symbols[num2, index]; } } else { for (num2 = 1; num2 < (table_colspan[num, 0] + 1); num2++) { num16 = table_colspan[num, num2]; num12 = table_symbols[num, num2]; num17 = 0; num10 = 0; while (num17 < table_p.rows) { for (num18 = 1; num18 < (table_colspan[num17, 0] + 1); num18++) { if (num16 == table_colspan[num17, num18]) { num10++; if (num12 <= table_symbols[num17, num18]) { num12 = table_symbols[num17, num18]; } } } num17++; } if (num10 > 0) { for (num17 = num; num17 < table_p.rows; num17++) { for (num18 = 1; num18 < (table_colspan[num17, 0] + 1); num18++) { if ((num16 == table_colspan[num17, num18]) && (table_symbols[num17, num18] == 0)) { table_symbols[num17, num18] = num12; } } } } } } } this.table_check_width(table_array, table_symbols, table_images, numArray7, table_colspan, table_p, numArray3, numArray6, flag4); for (num = 0; num < this.MAX_COLUMNS; num++) { numArray2[num] = 0; } for (num = 0; num < table_p.rows; num++) { if (numArray2[table_map[num, 0]] > 0) { num2 = numArray2[table_map[num, 0]] - 1; for (index = 1; index < (table_p.cols + 1); index++) { table_map[num, index] = table_map[num2, index]; } } else { index = 1; num5 = 0; while (index < (table_symbols[num, 0] + 1)) { num5 += table_symbols[num, index]; index++; } if (num5 > this.MAX_SYMBOLS_IN_COLUMN) { num5 = this.MAX_SYMBOLS_IN_COLUMN; } num5 = this.TBLEN / this.TWIPS_PER_ONE_SYMBOL; for (index = 1; index < (table_symbols[num, 0] + 1); index++) { if (num5 != 0) { if (table_symbols[num, index] == 1) { table_map[num, index] = (table_symbols[num, index] * TBLEN_MAX) / num5; } else if (table_symbols[num, index] == 0) { table_map[num, index] = 10; } else if ((table_symbols[num, index] >= 2) && (table_symbols[num, index] <= 3)) { table_map[num, index] = (table_symbols[num, index] * TBLEN_MAX) / num5; } else if ((table_symbols[num, index] >= 4) && (table_symbols[num, index] <= 10)) { table_map[num, index] = (table_symbols[num, index] * TBLEN_MAX) / num5; } else if ((table_symbols[num, index] >= 11) && (table_symbols[num, index] <= 0x19)) { table_map[num, index] = (table_symbols[num, index] * TBLEN_MAX) / num5; } else if ((table_symbols[num, index] > 0x19) && (table_symbols[num, index] <= 50)) { table_map[num, index] = (0x19 * TBLEN_MAX) / num5; } else if ((table_symbols[num, index] > 50) && (table_symbols[num, index] <= 100)) { table_map[num, index] = (0x33 * TBLEN_MAX) / num5; } else if ((table_symbols[num, index] > 100) && (table_symbols[num, index] <= 0xc7)) { table_map[num, index] = (70 * TBLEN_MAX) / num5; } else if (table_symbols[num, index] > 200) { table_map[num, index] = (this.MAX_SYMBOLS_IN_COLUMN * TBLEN_MAX) / num5; } if (table_map[num, index] > this.TBLEN) { table_map[num, index] = this.TBLEN; } } } for (index = 1; index < (table_p.cols + 1); index++) { if (table_width[num, index] == 0) { if (table_map[num, index] < table_array[num, index]) { table_map[num, index] = table_array[num, index]; } } else if (table_array[num, index] != 0) { table_map[num, index] = table_array[num, index]; } } } } for (num = 0; num < table_p.rows; num++) { for (num2 = 0; num2 < (table_p.cols + 1); num2++) { table_array[num, num2] = table_colspan[num, num2]; } } for (num = 0; num < this.MAX_COLUMNS; num++) { numArray2[num] = 0; } if (flag) { for (num = 0; num < table_p.rows; num++) { if (numArray2[table_map[num, 0]] > 0) { num2 = numArray2[table_map[num, 0]] - 1; for (index = 1; index < (table_p.cols + 1); index++) { table_map[num, index] = table_map[num2, index]; } } else { num10 = 0; for (num11 = 1; num11 < (table_images[num, 0] + 1); num11++) { if (table_images[num, num11] > 0) { num10 = 1; break; } } if (num10 > 0) { for (num2 = 1; num2 < (table_images[num, 0] + 1); num2++) { if (table_map[num, num2] < table_images[num, num2]) { table_map[num, num2] = table_images[num, num2]; } if ((table_images[num, num2] > 0) && (table_images[num, num2] > table_map[num, num2])) { numArray5[num2] = 1; } } } if (num10 == 0) { num2 = 1; num5 = 0; num12 = 0; while (num2 < (table_map[num, 0] + 1)) { num5 += table_map[num, num2]; if (table_width[num, num2] == 1) { num12 += table_map[num, num2]; } num2++; } num10 = 0; if ((num12 < num5) && (num12 > 0)) { if (TBLEN_MAX > (num5 - num12)) { num19 = ((float)num12) / ((float)(TBLEN_MAX - (num5 - num12))); num10 = 1; } else { num19 = ((float)num5) / ((float)TBLEN_MAX); } } else { num19 = ((float)num5) / ((float)TBLEN_MAX); } for (num2 = 1; num2 < (table_map[num, 0] + 1); num2++) { if (num10 == 1) { if (table_width[num, num2] == 1) { table_map[num, num2] = (int)(((float)table_map[num, num2]) / num19); } } else { table_map[num, num2] = (int)(((float)table_map[num, num2]) / num19); } } } else { num5 = 0; num9 = 0; for (num2 = 1; num2 < (table_map[num, 0] + 1); num2++) { num5 += table_map[num, num2]; if (numArray5[num2] == 1) { num9 += table_map[num, num2]; } } if (num9 > TBLEN_MAX) { num9 = TBLEN_MAX - 100; } if (num5 != num9) { num19 = ((float)(num5 - num9)) / ((float)(TBLEN_MAX - num9)); } else { num19 = ((float)num9) / ((float)TBLEN_MAX); } for (num2 = 1; num2 < (table_map[num, 0] + 1); num2++) { if ((numArray5[num2] != 1) || (num19 < 1f)) { table_map[num, num2] = (int)(((float)table_map[num, num2]) / num19); } } num2 = 1; num5 = 0; while (num2 < (table_map[num, 0] + 1)) { num5 += table_map[num, num2]; num2++; } if ((num5 < (TBLEN_MAX - 100)) || (num5 > (TBLEN_MAX + 1))) { num19 = ((float)num5) / ((float)TBLEN_MAX); for (num2 = 1; num2 < (table_map[num, 0] + 1); num2++) { table_map[num, num2] = (int)(((float)table_map[num, num2]) / num19); } } numArray2[table_map[num, 0]] = num + 1; for (num2 = 0; num2 < table_p.cols; num2++) { numArray5[num2] = 0; } } } } } else { for (num = 0; num < table_p.rows; num++) { if (numArray2[table_map[num, 0]] > 0) { num2 = numArray2[table_map[num, 0]] - 1; for (index = 1; index < (table_p.cols + 1); index++) { table_map[num, index] = table_map[num2, index]; } } else { num2 = 1; num5 = 0; while (num2 < (table_map[num, 0] + 1)) { num5 += table_map[num, num2]; num2++; } num19 = ((float)num5) / ((float)TBLEN_MAX); for (num2 = 1; num2 < (table_map[num, 0] + 1); num2++) { table_map[num, num2] = (int)(((float)table_map[num, num2]) / num19); } numArray2[table_map[num, 0]] = num + 1; } } } for (num = 0; num < this.MAX_COLUMNS; num++) { numArray2[num] = 0; } for (num = 0; num < table_p.rows; num++) { if (numArray2[table_map[num, 0]] > 0) { num2 = numArray2[table_map[num, 0]] - 1; for (index = 1; index < (table_p.cols + 1); index++) { table_map[num, index] = table_map[num2, index]; } } else { num2 = table_map[num, 0]; num5 = 0; while (num2 >= 1) { colspan = table_map[num, num2]; table_map[num, num2] = TBLEN_MAX - num5; num5 += colspan; num2--; } } } for (num = 0; num < table_p.rows; num++) { for (num2 = 1; num2 < (table_p.cols + 1); num2++) { table_colspan[num, num2] = 0; table_symbols[num, num2] = table_map[num, num2]; } } for (num = 0; num < table_p.rows; num++) { table_map[num, table_map[num, 0]] = TBLEN_MAX; } for (num = 0; num < this.MAX_COLUMNS; num++) { numArray2[num] = 0; } for (num = 0; num < table_p.rows; num++) { if (numArray2[table_map[num, 0]] > 0) { num2 = numArray2[table_map[num, 0]] - 1; for (index = 1; index < (table_p.cols + 1); index++) { table_map[num, index] = table_map[num2, index]; } } else { for (num2 = 1; num2 < (table_array[num, 0] + 1); num2++) { num16 = table_array[num, num2]; if (((num16 != 1) || (table_map[num, 0] != 1)) && (((num2 != 1) || (num16 <= 1)) || ((table_width[num, num2] != 1) || (table_map[num, 0] != 1)))) { num12 = table_map[num, num2]; flag2 = false; if (table_width[num, num2] == 1) { flag2 = true; } num17 = 0; num10 = 0; while (num17 < table_p.rows) { for (num18 = 1; num18 < (table_array[num17, 0] + 1); num18++) { if ((num16 == table_array[num17, num18]) && ((num16 != 1) || (table_map[num17, 0] != 1))) { num10++; if ((num12 <= table_map[num17, num18]) && (table_map[num17, num18] != TBLEN_MAX)) { if ((numArray3[table_map[num17, 0]] == 0) || (table_width[num17, num18] == 0)) { num12 = table_map[num17, num18]; } } else if (num12 > table_map[num17, num18]) { if (flag2 && (table_width[num17, num18] == 0)) { num12 = table_map[num17, num18]; flag2 = false; } else if (numArray4[num17 + 1] == 1) { num12 = table_map[num17, num18]; } } } } num17++; } if (num10 > 0) { for (num17 = num; num17 < table_p.rows; num17++) { for (num18 = 1; num18 < (table_array[num17, 0] + 1); num18++) { if (num16 == table_array[num17, num18]) { if (num10 > 1) { table_colspan[num17, num18] = 1; } table_map[num17, num18] = num12; } } } } } } } } for (num = 0; num < this.MAX_COLUMNS; num++) { numArray2[num] = 0; } for (num = 0; num < table_p.rows; num++) { if (numArray2[table_map[num, 0]] > 0) { num2 = numArray2[table_map[num, 0]] - 1; for (index = 1; index < (table_p.cols + 1); index++) { table_map[num, index] = table_map[num2, index]; } } else { for (num2 = 1; num2 < table_map[num, 0]; num2++) { numArray[0] = table_map[num, num2]; numArray[1] = table_map[num, num2 + 1]; if ((numArray[1] < numArray[0]) && ((num2 + 1) < table_map[num, 0])) { table_map[num, num2 + 1] = (table_map[num, num2] + table_map[num, num2 + 2]) / 2; } } } } for (num = 0; num < table_p.rows; num++) { table_map[num, table_map[num, 0]] = TBLEN_MAX; } if ((this._preserveTableWidth == 1) && (table_p.table_width > 0)) { num12 = TBLEN_MAX; if (table_p.percent_width == 0) { num12 = (table_p.table_width * TBLEN_MAX) / this.SCREEN_W_DEF; } else if (table_p.table_width < 100) { num12 = (table_p.table_width * TBLEN_MAX) / 100; } if ((num12 < (TBLEN_MAX - 500)) && (num12 > 0x3e8)) { num19 = ((float)num12) / ((float)TBLEN_MAX); for (num = 0; num < table_p.rows; num++) { for (num2 = 1; num2 < (table_map[num, 0] + 1); num2++) { table_map[num, num2] = (int)(table_map[num, num2] * num19); } } } } }