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; }
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())); }