示例#1
0
        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";
        }
示例#2
0
        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;
            }
        }