public override void GoToPosition(PositionKind positionKind) { var origPos = HexView.Caret.Position.Position.ActivePosition.BufferPosition; var selectPos = HexView.Selection.IsEmpty ? origPos : HexView.Selection.AnchorPoint < HexView.Selection.ActivePoint ? HexView.Selection.AnchorPoint : HexView.Selection.AnchorPoint - 1; var data = new GoToPositionVM(HexView.Buffer.ReadUInt32(origPos)); data.PositionKind = positionKind; var win = new GoToPositionDlg(); win.DataContext = data; win.Owner = OwnerWindow; if (win.ShowDialog() != true) { return; } var pos = Filter(ToBufferPosition(origPos, data.OffsetVM.Value, data.PositionKind)); var newPos = new HexBufferPoint(HexView.Buffer, pos); if (!data.SelectToNewPosition) { MoveTo(newPos, newPos, newPos, select: false); } else { var info = UserValueToSelection(selectPos, newPos); MoveTo(new HexBufferPoint(HexView.Buffer, info.Anchor), new HexBufferPoint(HexView.Buffer, info.Active), new HexBufferPoint(HexView.Buffer, info.Caret), select: true); } }
/// <summary> /// Gets the data position depending on the timestamp. /// </summary> public bool GetDataPosition(DateTime timestamp, PositionKind positionKind, out TrendTablePage page, out int indexInPage) { if (AcceptData(timestamp, positionKind == PositionKind.Exact, out bool isExactMatch)) { int indexWithinTable; double timeOfDay = timestamp < Metadata.MaxTimestamp ? timestamp.TimeOfDay.TotalSeconds : SecondsPerDay; switch (positionKind) { case PositionKind.Floor: indexWithinTable = (int)(timeOfDay / WritingPeriod); break; case PositionKind.FloorExclusive: indexWithinTable = (int)(timeOfDay / WritingPeriod); if (isExactMatch) { indexWithinTable--; } break; case PositionKind.Ceiling: indexWithinTable = (int)Math.Ceiling(timeOfDay / WritingPeriod); break; default: // PositionKind.Exact: indexWithinTable = (int)Math.Round(timeOfDay / WritingPeriod); break; } if (indexWithinTable < 0) { indexWithinTable = 0; } else if (indexWithinTable >= TableCapacity) { indexWithinTable = TableCapacity - 1; } int pageIndex = indexWithinTable / Metadata.PageCapacity; if (0 <= pageIndex && pageIndex < Pages.Count) { page = Pages[pageIndex]; indexInPage = indexWithinTable % Metadata.PageCapacity; return(true); } } page = null; indexInPage = -1; return(false); }
HexPosition ToBufferPosition(HexPosition origPosition, ulong position, PositionKind positionKind) { switch (positionKind) { case PositionKind.Absolute: return(HexView.BufferLines.ToPhysicalPosition(position)); case PositionKind.File: return(TryGetPeHeaders(origPosition)?.FilePositionToBufferPosition(position) ?? position); case PositionKind.RVA: return(TryGetPeHeaders(origPosition)?.RvaToBufferPosition((uint)position) ?? position); case PositionKind.CurrentPosition: return((origPosition + position).ToUInt64()); default: throw new ArgumentOutOfRangeException(nameof(positionKind)); } }
public abstract void GoToPosition(PositionKind positionKind);
HexPosition GetEndPosition(HexPosition origPos, HexPosition startPos, HexPosition pos, PositionKind positionKind, SelectPositionLengthKind selectPosKind) { switch (selectPosKind) { case SelectPositionLengthKind.Position: switch (positionKind) { case PositionKind.Absolute: case PositionKind.File: case PositionKind.RVA: return(ToBufferPosition(origPos, pos.ToUInt64(), positionKind)); case PositionKind.CurrentPosition: return((origPos + pos).ToUInt64()); default: throw new InvalidOperationException(); } case SelectPositionLengthKind.Length: if (pos == HexPosition.Zero) { return(startPos); } return((startPos + pos - 1).ToUInt64()); default: throw new InvalidOperationException(); } }
public TutorialPair(String text, Matrix matrix) { this.text = text; kind = PositionKind.POS_3D; this.matrix = matrix; }
public TutorialPair(String text, Vector2 position) { this.text = text; kind = PositionKind.POS_2D; this.position = position; }
public PositionVM(PositionKind kind, string text, string inputGestureText) { Kind = kind; Text = text; InputGestureText = inputGestureText; }
public static bool IsOpened(this PositionKind position) { return(position != PositionKind.Flat); }
/// <summary> /// Builds margins for the candidate group. /// </summary> /// <param name="position">Position of wave margin.</param> /// <returns>A list of margins.</returns> public List<short[]> BuildMargins(PositionKind position) { List<short[]> margins = new List<short[]>(); foreach (UnitCandidate candidate in Candidates) { if (position == PositionKind.Head) { margins.Add(candidate.HeadMargin); } else if (position == PositionKind.Tail) { margins.Add(candidate.TailMargin); } else { throw new ArgumentException( Helper.NeutralFormat("Unsupported position kind \"{0}\"", position.ToString())); } } return margins; }
public static object DataFor(this IVirtualListViewAdapter vlva, PositionKind kind, int sectionIndex, int itemIndex) => kind switch {