Correct downsampling and better layout
This commit is contained in:
1 parent
0d741c401b
commit
30db44eaa0
13 files changed
+1511
-252
No files matched your search
+26
-1
@@ -41,7 +41,12 @@ namespace udpscope {
|
||||
/// context and is simply handed the new figure.
|
||||
class RowSet {
|
||||
public:
|
||||
static constexpr int kMaxRows = 4;
|
||||
/// The ceiling on rows, not the count: rows are added and removed one at a time
|
||||
/// (`insert_row()`, `remove_row()`) rather than picked off a list of fixed layouts.
|
||||
/// A cap still exists because `storage_` is the rows' persistent state and has to be
|
||||
/// allocated somewhere, and because the figure keeps a floor height per row -- past
|
||||
/// about this many a row is chrome and no plot.
|
||||
static constexpr int kMaxRows = 8;
|
||||
static constexpr int kSlotsPerRow = 4;
|
||||
|
||||
RowSet();
|
||||
@@ -93,6 +98,17 @@ class RowSet {
|
||||
/// Shows `rows` rows. A changed count rebuilds the figure, since a `Figure`'s row
|
||||
/// count is fixed at construction.
|
||||
void set_row_count(int rows);
|
||||
/// Inserts an empty row at `at` (0 = above the first row, `row_count()` = below the
|
||||
/// last), pushing the rows at and below it down. Returns false at `kMaxRows`.
|
||||
///
|
||||
/// The rows below move as *rows*: their trace assignments, colours and cursors follow
|
||||
/// them, so inserting above row 1 does not renumber what row 1 was plotting. The
|
||||
/// figure's `Plot`s are not what moves -- they are rebuilt and re-dealt -- which is
|
||||
/// the same mechanism a row-count change already used.
|
||||
bool insert_row(int at);
|
||||
/// Removes row `at` and pulls the rows below it up. Returns false when only one row
|
||||
/// is left: a figure with no rows has nothing to draw and no way back.
|
||||
bool remove_row(int at);
|
||||
Row& row(int i) { return storage_[static_cast<std::size_t>(i)]; }
|
||||
const Row& row(int i) const { return storage_[static_cast<std::size_t>(i)]; }
|
||||
|
||||
@@ -192,6 +208,15 @@ class RowSet {
|
||||
static plot::Color unplotted_color();
|
||||
|
||||
private:
|
||||
/// Moves one row's *persistent* state -- what it plots, in which colours, where its
|
||||
/// cursors are -- onto another row. Deliberately not a `Row` assignment: a `Row` also
|
||||
/// carries the figure handles (`plot`, the axis and cursor ids) and the `SlotSeries`
|
||||
/// objects the traces point at, and those belong to the row's *position*, not to its
|
||||
/// contents. `rebuild_all()` re-deals them straight after.
|
||||
static void carry_row(Row& dst, const Row& src);
|
||||
/// Back to an empty row: nothing plotted, the default palette entries, no cursors.
|
||||
static void clear_row(Row& r);
|
||||
|
||||
void install(Row& r, int row_index, plot::Plot& p);
|
||||
void place_cursors(Row& r);
|
||||
/// The newest x any row's live traces hold, which is what the group follows.
|
||||
|
||||
Reference in new issue
Block a user