예제 #1
0
        private void ShowComponents(int start, bool save = true)
        {
            if (save)
            {
                SaveCurrentValues();
            }

            for (var row = 0; row < _totalChannelsDisplayed; row++)
            {
                _labels[row].Text      = _sourceProfile.GetChannelName(start + row);
                _labels[row].BackColor = _sourceProfile.GetChannelColor(start + row);
                _labels[row].ForeColor = _labels[row].BackColor.GetForeColor();

                _textBoxes[row].Text = _destinationTextBoxText[_sourceProfile.GetChannelLocation(start + row)];

                if (!_isPreview)
                {
                    continue;
                }

                var s   = _textBoxes[row].Text.Split(_splitChar, StringSplitOptions.RemoveEmptyEntries);
                var col = 0;

                foreach (var channel in s)
                {
                    var channelNum = int.Parse(channel);
                    var c          = Controls.Find("r" + row + "c" + col, true)[0];
                    if (channelNum < _destinationNatural.GetChannelCount())
                    {
                        c.Text      = _destinationNatural.GetChannelName(channelNum);
                        c.BackColor = _destinationNatural.GetChannelColor(channelNum);
                        c.ForeColor = c.BackColor.GetForeColor();
                        c.Visible   = true;
                    }
                    col++;
                }

                for (; col < _maxDestinationCount; col++)
                {
                    Controls.Find("r" + row + "c" + col, true)[0].Visible = false;
                }
            }

            _currentTopChannelIndex = start;
            vsb.Value = start;
        }
예제 #2
0
        private string TransformSequence()
        {
            var sequence    = new ChannelMapperSequence(_sourceSequence.FileName);
            var numOfEvents = sequence.GetEventCount();

            var oldNumOfChannels = _sourceProfile.GetChannelCount();
            var newNumOfChannels = _destinationProfile.GetChannelCount();
            var newEventValues   = new byte[newNumOfChannels, numOfEvents];
            var oldEventValues   = new byte[oldNumOfChannels, numOfEvents];


            var oldEventData   = Convert.FromBase64String(sequence.EventData);
            var oldEventLength = oldEventData.Length;

            var currentEvent = 0;

            for (var chan = 0; chan < oldNumOfChannels; chan++)
            {
                for (var thisEvent = 0; currentEvent < oldEventLength && thisEvent < numOfEvents; thisEvent++)
                {
                    oldEventValues[chan, thisEvent] = oldEventData[currentEvent++];
                }
            }

            //writeChannels("oldChannels.txt", oldEventValues, oldNumOfChannels, numOfEvents);

            var mapSplit     = new[] { ';' };
            var channelSplit = new[] { ':' };
            var elementSplit = new[] { ' ' };

            var channels = GetMap().Split(mapSplit, StringSplitOptions.RemoveEmptyEntries);

            foreach (var channel in channels)
            {
                var elements = channel.Split(channelSplit, StringSplitOptions.RemoveEmptyEntries);

                if (elements.Length <= 1)
                {
                    continue;
                }

                var from       = int.Parse(elements[0]);
                var toChannels = elements[1].Split(elementSplit, StringSplitOptions.RemoveEmptyEntries);
                foreach (var toChannel in toChannels)
                {
                    var to = int.Parse(toChannel);
                    for (var i = 0; i < numOfEvents; i++)
                    {
                        var destinationChannel = _destinationProfile.GetChannelLocation(to);
                        var sourceChannel      = _sourceProfile.GetChannelLocation(from);
                        var oldEventValue      = oldEventValues[sourceChannel, i];
                        newEventValues[destinationChannel, i] = oldEventValue;
                    }
                }
            }

            //writeChannels("newChannels.txt", newEventValues, newNumOfChannels, numOfEvents);

            var newEventData = new byte[newNumOfChannels * numOfEvents];
            var index        = 0;

            for (var i = 0; i < newNumOfChannels; i++)
            {
                for (var j = 0; j < numOfEvents; j++)
                {
                    newEventData[index++] = newEventValues[i, j];
                }
            }

            sequence.EventData = Convert.ToBase64String(newEventData);

            return(sequence.SaveNewData(_destinationProfile.GetFileName()));
        }