public MultiChartArray_ViewModel(int Rows, int Cols, int Padding, int Margin, int MaxPoints, List <MultiChartArray_TraceItem> Traces) { chartArrayWidth = 0; chartArrayHeight = 0; cols = Cols; rows = Rows; padding = Padding; margin = Margin; maxPoints = MaxPoints; numTraces = Traces.Count; // initialize traces and trace colors int traceNum = 0; traces = new Dictionary <int, MultiChartArray_TraceItem>(); traceColors = new Dictionary <Tuple <int, MultiChartArray.SIGNAL_TYPE>, Color>(); foreach (MultiChartArray_TraceItem item in Traces) { item.traceNum = traceNum; traces.Add(item.id, item); traceNum++; // initialize trace colors foreach (int value in Enum.GetValues(typeof(MultiChartArray.SIGNAL_TYPE))) { MultiChartArray.SIGNAL_TYPE signal = (MultiChartArray.SIGNAL_TYPE)value; traceColors.Add(Tuple.Create <int, MultiChartArray.SIGNAL_TYPE>(item.id, signal), Colors.Yellow); // default to yellow } } int pixelsPerChart = 42; int newWidth = (pixelsPerChart * cols) + ((cols - 1) * padding) + (2 * margin); int newHeight = (pixelsPerChart * rows) + ((rows - 1) * padding) + (2 * margin); byte[] img = SynthesizeImage(newWidth, newHeight); SetBitmap(img, newWidth, newHeight); SetAggregateBitmap(img, newWidth / 2, newHeight / 2); yMaxText = "YMax"; yMinText = "YMin"; xMaxText = "XMax"; }
public void Init(int rows, int cols, int maxNumPoints, List <MultiChartArray_TraceItem> traces, AggregateChart aggregateChart) { int numTraces = traces.Count; int margin = 1; int padding = 3; //////////////////////////////////////////////////////////////////////////////////////////////// m_chartArrayWidth = 0; m_chartArrayHeight = 0; m_cols = cols; m_rows = rows; m_padding = padding; m_margin = margin; m_maxPoints = maxNumPoints; m_numTraces = traces.Count; m_aggregateChart = aggregateChart; // initialize traces and trace colors int traceNum = 0; m_traces = new Dictionary <int, MultiChartArray_TraceItem>(); m_traceColors = new Dictionary <Tuple <int, MultiChartArray.SIGNAL_TYPE>, Color>(); foreach (MultiChartArray_TraceItem item in traces) { item.traceNum = traceNum; m_traces.Add(item.id, item); traceNum++; // initialize trace colors foreach (int value in Enum.GetValues(typeof(MultiChartArray.SIGNAL_TYPE))) { MultiChartArray.SIGNAL_TYPE signal = (MultiChartArray.SIGNAL_TYPE)value; m_traceColors.Add(Tuple.Create <int, MultiChartArray.SIGNAL_TYPE>(item.id, signal), Colors.Yellow); // default to yellow } } int pixelsPerChart = 42; int newWidth = (pixelsPerChart * m_cols) + ((m_cols - 1) * m_padding) + (2 * m_margin); int newHeight = (pixelsPerChart * m_rows) + ((m_rows - 1) * m_padding) + (2 * m_margin); byte[] img = SynthesizeImage(newWidth, newHeight); SetBitmap(img, newWidth, newHeight); if (aggregateChart != null) { aggregateChart.SetBitmap(img, newWidth / 2, newHeight / 2); aggregateChart.SetRanges(1, 0, 1); } //////////////////////////////////////////////////////////////////////////////////////// m_mouseDownRow = -1; m_mouseDownCol = -1; m_numPoints = 0; InitializeComponent(); m_visibleSignal = SIGNAL_TYPE.RAW; m_buttonColorNotSelected = Colors.LightGray; m_buttonColorSelected = Colors.Red; m_rowButton = new List <Button>(); m_columnButton = new List <Button>(); BuildChartArray(); SetupVisiblityCheckBoxes(m_traces); m_refreshTimer = new DispatcherTimer(); m_refreshTimer.Tick += M_refreshTimer_Tick; m_refreshTimer.Interval = TimeSpan.FromMilliseconds(100); m_refreshTimer.Start(); m_newDataAdded = false; m_dataPipeline = CreateDataPipeline(m_tokenSource.Token, m_chartArrays); m_guiPipeline = CreateGuiPipeline(m_uiTask, m_tokenSource.Token, m_chartArrays, aggregateChart); if (aggregateChart != null) { aggregateChart.SizeChanged += AggregateChart_SizeChanged; } }