#acl FriedemannBunjes:read,write,delete,revert All:read #format wiki #language en #pragma section-numbers 2 = Understanding the Plotting = <> The Plotting is used to handle the data plot windows containing qwt plots and streaming data into them. == CGuiMain: Main User Interface == Plot controller and experiment controller are created. SIGNALs and SLOTs to e.g. CPlotController::!CreateWindow() are established. In the Idle() method, the controllers' Idle() methods are called (e.g. to refresh the data plots). == CPlotController == Holding the '''plot windows configuration''' for the current !ParadigmType in "GUI/PLOTTING/[PARADIGMTYPE]/PLOTWIN[N]" '''!SetConfiguration''': Creation and showing of CPlotWindow's with given configuration '''!AddPlotGenerator''': Hand a new plot generator over to the controller. Data produced by the generator can now be displayed in each plot window. Data identification via '''m_poDataKeys'''. Data in '''m_mapChannelData.CPlotDataHandle''' Classes identification via '''m_lstDisplayClasses'''. == CExperimentController == '''CExperimentController::!MakeEyeposPlots''': Create a CADaqPlotGenerator that receives all eye position data recorded in the course of the given trial and turns it into plot data which can be displayed in a plot window. Push the generator to the plot controller. '''CExperimentController::!MakeAnalogPlots''': similar (CADaqPlotGenerator) '''CExperimentController::!MakeRasterPlots''': similar, but create and register CDDaqPlotGenerator as receiver for the trial's recorded data at CDaqFacade '''CExperimentController::!MakeHistograms''': similar, but create and register CDDaqHistogramGenerator as receiver for the trial's recorded data at CDaqFacade == CQwtPlot == Holds '''CPlotDataChannels''' for each registered channel to be plotted. Handles curves: add, delete, clear, setNumberOfCurves etc. '''!MakeDataChannel''': create CPlotDataChannel or inherited channels like CHistogramDataChannel (both in '''CPlotDataChannel.cpp''') '''Make sure, that !GetDataChannel is used with the appropriate dynamic_cast to the correct !PlotType. This is needed to actually use the overwritten methods (keyword: slicing).''' == CPlotDataChannel == '''CPlotDataChannel::!InitLooks()''': '''actual visual properties of the plots''' '''!DoAddCurve''': add curve data as new '''!QwtPlotCurve''' and attach it to the plot