public Image Convert(RdbNets data) { int oldPercent = 0; int newPercent = 0; var points = data.Nets.SelectMany(net => net.pins.Select(pin => new Point { X = pin.x, Y = pin.y })); foreach (var point in points) { if ( point.X >= 0 && point.Y >= 0 && point.X < _image.Width && point.Y < _image.Height) { _image.SetPixel( (int)point.X, (int)point.Y, Color.White); //BackgroundWorker.ReportProgress(newPercent, (int)2); if (newPercent > oldPercent) { Thread.Sleep(1); } } } //BackgroundWorker.ReportProgress(100, (int)2); //Thread.Sleep(1); return(_image); }
public async Task <RdbNets> RotateAround( RdbNets nets, Point pivot, float angle, BackgroundWorker bgw) { BackgroundWorker = bgw; NumberOfEntries = nets.Nets.SelectMany(net => net.pins).Count(); Index = 0; int oldPercent = 0; int newPercent = 0; foreach (var net in nets.Nets) { var newPins = new List <Pin>(); foreach (var pin in net.pins) { var point = new Point { X = pin.x, Y = pin.y }; if (pin.name != "_") { point = _movePoint.RotateAround(point, pivot, angle); } newPins.Add(new Pin { name = pin.name, x = point.X, y = point.Y }); Index++; oldPercent = newPercent; newPercent = (Index * 100) / NumberOfEntries; BackgroundWorker.ReportProgress(newPercent, (int)1); if (newPercent > oldPercent) { Thread.Sleep(5); } } net.pins = newPins; } BackgroundWorker.ReportProgress(newPercent); if (newPercent > oldPercent) { Thread.Sleep(1); } nets.UpdateCentroid(); BackgroundWorker.ReportProgress(100); Thread.Sleep(1); return(nets); }
public MainWindow() { InitializeComponent(); _loadedData = new RdbNets { fileName = "", Nets = new RdbNet[] {} }; LoadData(); bgw = new BackgroundWorker(); _updateRDB = new UpdateRDB(); }
public void WhenUpdate() { //Arrange _updateRdb = Mocker.CreateInstance <UpdateRDB>(); _testNets = AutoFixture.Create <TestNets>(); _pivot = AutoFixture.Create <Point>(); _angle = AutoFixture.Create <float>(); _backgroundworker = new BackgroundWorker(); _results = null; _canComplete = false; var expectedPoint = new Point { X = 1, Y = 1 }; Mocker.GetMock <IMovePoint>() .Setup(move => move.RotateAround(It.IsAny <Point>(), _pivot, _angle)) .Returns(expectedPoint); //Act _backgroundworker.DoWork += new DoWorkEventHandler(bgw_Test); _backgroundworker.ProgressChanged += new ProgressChangedEventHandler(bgw_ProgressChanged); _backgroundworker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgw_RunWorkerCompleted); _backgroundworker.WorkerReportsProgress = true; _backgroundworker.RunWorkerAsync(); while (_canComplete == false) { } var resultPoints = _results.Nets.SelectMany(pins => pins.pins.Select(pin => new Point { X = pin.x, Y = pin.y })) .ToArray(); //Assert var i = 0; while (i < resultPoints.Length) { resultPoints[i].X.Should().Be(expectedPoint.X); resultPoints[i].Y.Should().Be(expectedPoint.Y); i++; } _results.CentroidX.Should().Be((float)1); _results.CentroidY.Should().Be((float)1); _progress.Should().Be(100); }
public RdbNets Get(string fileName) { var nets = _readRdb.Read(fileName); var rdbNets = new RdbNets { fileName = fileName, Nets = nets }; rdbNets.UpdateCentroid(); return(rdbNets); }
async void bgw_Rotate(object sender, DoWorkEventArgs e) { _loadedData = await _updateRDB.RotateAround( _loadedData, new RDB.Interface.RDBObjects.Point { X = xPosition, Y = yPosition }, _angle, bgw ); }
public UpdateRDB( RdbNets taskNets, Point pivot, float angle ) { _taskNets = taskNets; _pivot = pivot; _angle = angle; _newPins = new List <Pin>(); _intervals = 100; _currentIndex = 0; _taskDone = false; }
public string[] Write(RdbNets data) { var lines = new List <string>(); foreach (var dataNet in data.Nets) { lines.Add(string.Format(RdbFileLines.NetLine, dataNet.name)); lines.Add(string.Format(RdbFileLines.PropLine, dataNet.prop)); foreach (var pin in dataNet.pins) { lines.Add(string.Format(RdbFileLines.PinLine, pin.name, pin.x, pin.y)); } } return(lines.ToArray()); }
private void Open_Click(object sender, RoutedEventArgs e) { string fileName = ""; OpenFileDialog openFileDialog = new OpenFileDialog(); if (openFileDialog.ShowDialog() == true) { fileName = openFileDialog.FileName; } GetRdbNets getter = new GetRdbNets(new ReadRdb(new OpenAndReadRDBFile())); _loadedData = getter.Get(fileName); LoadData(); }
public void Write(RdbNets data) { _writeRdbDataToFile.Write(_writeableRdb.Write(data), data.fileName); }