/// <summary> /// Renders a LineString to the map. /// </summary> /// <param name="g">Graphics reference</param> /// <param name="line">LineString to render</param> /// <param name="pen">Pen style used for rendering</param> /// <param name="map">Map reference</param> /// <param name="offset">Offset by which line will be moved to right</param> public static void DrawLineString(Graphics g, ILineString line, Pen pen, IMapViewPort map, float offset) { var points = line.TransformToImage(map); if (points.Length > 1) { using (var gp = new GraphicsPath()) { if (Math.Abs(offset) > NEAR_ZERO) { points = LineOffset.OffsetPoints(points, offset);//OffsetRight(points, offset); } gp.AddLines(/*LimitValues(*/ points /*, ExtremeValueLimit)*/); g.DrawPath(pen, gp); } } }
private void UpdateDumpView() { // // Sort the selected packets // List<IPPacket> packets = new List<IPPacket>(); Dictionary<IPPacket, DataGridViewRow> packetToRow = new Dictionary<IPPacket, DataGridViewRow>(); foreach (DataGridViewRow row in dataGridView.SelectedRows) { if ((UInt32)row.Cells[msgTypeDataGridViewTextBoxColumn.Index].Value != Convert.ToUInt32(MessageType.MESSAGE_TYPE_PACKET)) continue; int index = (int)row.Cells[indexDataGridViewTextBoxColumn.Index].Value; IPPacket packet = packetParser.GetPacket(index); packets.Add(packet); packetToRow[packet] = row; } packets.Sort(); curLinesToPackets = new Dictionary<int, IPPacket>(packets.Count); curPacketList = packets; // // Iterate through the selected packets and add a raw dump // of each, and add each to the list of decoded packets // StringBuilder dump = new StringBuilder(512); int packetNo = 0; int lineNo = 0; string[] lines; foreach (IPPacket packet in packets) { if (packetNo > 0) { dump.Append("\n"); lineNo++; } int lineStart = lineNo; string linePrefix; switch (packet.Direction) { case PacketDirection.PACKET_DIRECTION_INCOMING: linePrefix = "<< "; break; case PacketDirection.PACKET_DIRECTION_OUTGOING: linePrefix = ">> "; break; default: linePrefix = ">< "; break; } dump.AppendFormat("{0}.¸¸.· #{1}\n", linePrefix, packet.Index); lineNo++; int nLines = 0; LineOffset[] lineOffsets = new LineOffset[0]; if (dumpDisplayMode == DisplayMode.HEX) { dump.Append(StaticUtils.ByteArrayToHexDump(packet.Bytes, linePrefix, out nLines)); dump.Append("\n"); } else { string str = StaticUtils.DecodeASCII(packet.Bytes); /* if (str.EndsWith("\r\n")) { str = str.Substring(0, str.Length - 2); } else if (str.EndsWith("\n")) { str = str.Substring(0, str.Length - 1); }*/ List<LineOffset> tmpList = new List<LineOffset>(1); int offset = 0; do { int p1 = str.IndexOf("\r\n", offset); int p2 = str.IndexOf("\n", offset); int pos; if (p1 >= 0 && p2 >= 0) { pos = Math.Min(p1, p2); } else { pos = (p1 >= 0) ? p1 : p2; } int termLen = (pos == p1) ? 2 : 1; if (pos == -1) { pos = str.Length; termLen = 0; } int length = pos - offset; string line = str.Substring(offset, length); tmpList.Add(new LineOffset(offset, length, termLen)); dump.AppendFormat("{0}{1}\n", linePrefix, line); nLines++; offset += pos - offset + termLen; } while (offset < str.Length); lineOffsets = tmpList.ToArray(); } for (int i = 0; i < nLines; i++) { curLinesToPackets[lineNo + i] = packet; } lineNo += nLines; packet.Tag = new PacketPosition(packetToRow[packet], lineStart, lineNo, lineOffsets); packetNo++; } richTextBox.Text = dump.ToString(); richTextBox.SelectAll(); richTextBox.SelectionColor = richTextBox.ForeColor; richTextBox.SelectionBackColor = richTextBox.BackColor; prevSelectedSlices = null; lines = richTextBox.Lines; Color colorIncoming = Color.FromArgb(138, 232, 153); Color colorOutgoing = Color.FromArgb(156, 183, 209); for (int i = 0; i < lines.Length; i++) { if (lines[i].StartsWith("<<")) { richTextBox.Select(richTextBox.GetFirstCharIndexFromLine(i), 2); richTextBox.SelectionColor = colorIncoming; } else if (lines[i].StartsWith(">>")) { richTextBox.Select(richTextBox.GetFirstCharIndexFromLine(i), 2); richTextBox.SelectionColor = colorOutgoing; } else if (lines[i].StartsWith("><")) { int index = richTextBox.GetFirstCharIndexFromLine(i); richTextBox.Select(index, 1); richTextBox.SelectionColor = colorIncoming; richTextBox.Select(index + 1, 1); richTextBox.SelectionColor = colorOutgoing; } } curNodeList = packetParser.GetTransactionsForPackets(packets); propertyGrid.SelectedObject = curNodeList; if (curNodeList.Count > 0) { UpdateDumpHighlighting(curNodeList[0].GetAllSlices().ToArray()); } }
public PacketPosition(DataGridViewRow row, int lineStart, int lineEnd, LineOffset[] lineOffsets) { Row = row; LineStart = lineStart; LineEnd = lineEnd; LineOffsets = lineOffsets; }
/// <summary> /// Method that does the actual rendering of individual features. /// </summary> /// <param name="map">The map</param> /// <param name="lineString">The linestring</param> /// <param name="graphics">The graphics object</param> protected override void OnRenderInternal(IMapViewPort map, ILineString lineString, Graphics graphics) { var pts = /*LimitValues(*/ LineOffset.OffsetPoints(lineString.TransformToImage(map), Offset); // VectorRenderer.OffsetRight(lineString.TransformToImage(map), Offset) /*)*/; graphics.DrawLines(Line, pts); }