Skip to content

NewSignalDisplay

J.W. Janssen edited this page Mar 14, 2011 · 3 revisions

Table of Contents

New signal display component

The new signal display component is a total rewrite of the existing signal display component. Reasons for this are that the current component is:

  • Hard to maintain, the code is needlessly complex and tangled;
  • Slow, the performance was tweaked a bit, but it should be a lot faster. Especially when the continuous sampling mode is going to be introduced, all the speed we can gain is a pro;
  • Makes "hard" assumptions about the availability of information, like the number of channels and so on.

Feature set

The new signal display component shall support:

  • Fast drawing of signals up to 32 channels;
  • Allow channel reordering through drag-and-drop;
  • Introduce a new timeline that provides detailed time information at all zoom levels;
  • Configurable channel labels;
  • Configurable channel colors (either predefined or by using color schemes);
  • Showing channel indexes beside the channel label;
  • Configurable cursor labels;
  • Configurable cursor colors (either predefined or by using color schemes);
  • Snap cursors to signal edges;
  • Measuring pulse widths/periods;
  • "Infinite" zoom levels;
  • Zoom by dragging a window over the area of interest;
  • Zoom between two defined cursors (?);
  • Make it easy to 'navigate' between signal edges in a channel;
  • Provide timing information between two selected cursors;
  • Mask out unused channels to get more attention to the "real" signal data.

Performance requirements

  • The signal drawing for 8 channels should be in the magnitude of tens of microseconds and for each added group of 8 channels scale linearly;
  • The component should react to user-events (clicking, dragging and such) in less than 100 milliseconds.

Non-functional requirements

  • The component should be tested through unit tests as much as possible;
  • All keyboard shortcuts/accelerators should adhere to the Human Interface guidelines as defined for Gnome, Mac OSX and Windows as much as possible;