//--------------------------------------------------------------------// // M e t h o d // // r e p o r t B o d y M a p // //--------------------------------------------------------------------// // // // Write details of mapping to report file. // // // //--------------------------------------------------------------------// private static void reportBodyMap( ReportCore.eRptFileFmt rptFileFmt, Object writer, UInt16[] symSetMap, UInt16 codeMin, UInt16 codeMax, Boolean flagIgnoreC0, Boolean flagIgnoreC1, Boolean flagMapHex) { const Int32 maxLineLen = 80; // ***************** constant elsewhere ??????????????? const Int32 lcDec = 5; const Int32 lcHex = 4; const Int32 lrDec = 5; const Int32 lrHex = 4; const Int32 colCt = 17; Int32 lcCol, lrHddr; String fmtHddr, fmtVal; Int32 mapIndx, rowIndx; String[] colHddrs = new String [colCt]; String[] colNames = new String [colCt]; Int32[] colSizes = new Int32 [colCt]; Int32 ctItems; ctItems = symSetMap.Length; //----------------------------------------------------------------// // // // Write out the header. // // // //----------------------------------------------------------------// ReportCore.hddrTitle(writer, rptFileFmt, true, "Mapping detail:"); ReportCore.tableHddrPair(writer, rptFileFmt); ReportCore.tableRowPair(writer, rptFileFmt, "Format", (flagMapHex ? "hexadecimal" : "decimal"), _colSpanNone, _colSpanNone, _maxSizeNameTag, maxLineLen, _flagNone, _flagNone, _flagNone); ReportCore.tableClose(writer, rptFileFmt); //----------------------------------------------------------------// // // // Open the table and write the column header text. // // // //----------------------------------------------------------------// if (flagMapHex) { lcCol = lcHex; lrHddr = lrHex; fmtHddr = "x4"; fmtVal = "x4"; colSizes[0] = lrHex; colNames[0] = "row"; colHddrs[0] = ""; for (Int32 i = 1; i < colCt; i++) { colSizes[i] = lcHex; colNames[i] = "col" + (i - 1).ToString("D2"); colHddrs[i] = "_" + (i - 1).ToString("x"); } } else { lcCol = lcDec; lrHddr = lrDec; fmtHddr = ""; fmtVal = ""; colSizes[0] = lrDec; colNames[0] = "row"; colHddrs[0] = ""; for (Int32 i = 1; i < colCt; i++) { colSizes[i] = lcDec; colNames[i] = "col" + (i - 1).ToString("D2"); colHddrs[i] = "+" + (i - 1).ToString("d"); } } ReportCore.tableHddrData(writer, rptFileFmt, true, colCt, colHddrs, colSizes); //----------------------------------------------------------------// // // // Write the data rows. // // // //----------------------------------------------------------------// Int32 colCtData = colCt - 1; mapIndx = 0; rowIndx = codeMin / colCtData; for (Int32 i = rowIndx; mapIndx < codeMax; i++) { String[] rowData = new String [colCt]; rowIndx = (i * colCtData); if (flagMapHex) { rowData[0] = (rowIndx.ToString(fmtHddr). Substring(0, 3) + "_"). PadLeft(lrHddr, ' '); } else { rowData[0] = rowIndx.ToString(fmtHddr). PadLeft(lrHddr, ' '); } for (Int32 j = 0; j < colCtData; j++) { String val; mapIndx = rowIndx + j; if ((mapIndx < codeMin) || (mapIndx > codeMax)) { val = " ".PadLeft(lcCol, ' '); } else if ((flagIgnoreC1) && ((mapIndx >= cCodePointC1Min) && (mapIndx <= cCodePointC1Max))) { val = cCodePointUnused. ToString(fmtVal).PadLeft(lcCol, ' '); } else { val = symSetMap[mapIndx]. ToString(fmtVal).PadLeft(lcCol, ' '); } rowData[j + 1] = val; } ReportCore.tableRowText(writer, rptFileFmt, colCt, rowData, colNames, colSizes); } //----------------------------------------------------------------// // // // Write any required end tags. // // // //----------------------------------------------------------------// ReportCore.tableClose(writer, rptFileFmt); }