Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
 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);
        }
Пример #5
0
        public RdbNets Get(string fileName)
        {
            var nets    = _readRdb.Read(fileName);
            var rdbNets = new RdbNets
            {
                fileName = fileName,
                Nets     = nets
            };

            rdbNets.UpdateCentroid();

            return(rdbNets);
        }
Пример #6
0
 async void bgw_Rotate(object sender, DoWorkEventArgs e)
 {
     _loadedData = await _updateRDB.RotateAround(
         _loadedData,
         new RDB.Interface.RDBObjects.Point
     {
         X = xPosition,
         Y = yPosition
     },
         _angle,
         bgw
         );
 }
Пример #7
0
 public UpdateRDB(
     RdbNets taskNets,
     Point pivot,
     float angle
     )
 {
     _taskNets     = taskNets;
     _pivot        = pivot;
     _angle        = angle;
     _newPins      = new List <Pin>();
     _intervals    = 100;
     _currentIndex = 0;
     _taskDone     = false;
 }
Пример #8
0
        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());
        }
Пример #9
0
        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();
        }
Пример #10
0
 public void Write(RdbNets data)
 {
     _writeRdbDataToFile.Write(_writeableRdb.Write(data), data.fileName);
 }