Skip to content

Commit

Permalink
c++ wrappers for ncplot #441
Browse files Browse the repository at this point in the history
  • Loading branch information
dankamongmen committed Apr 8, 2020
1 parent 312d15d commit 9dc81f0
Showing 1 changed file with 67 additions and 0 deletions.
67 changes: 67 additions & 0 deletions include/ncpp/Plot.hh
@@ -0,0 +1,67 @@
#ifndef __NCPP_PLOT_HH
#define __NCPP_PLOT_HH

#include <notcurses/notcurses.h>

#include "Root.hh"
#include "NCAlign.hh"

namespace ncpp
{
class Plane;

class NCPP_API_EXPORT Plot : public Root
{
public:
static plot_options default_options;

public:
explicit Plot (Plane *plane, const plot_options *opts = nullptr)
: Plot (reinterpret_cast<ncplane*>(plane), opts)
{}

explicit Plot (Plane const* plane, const plot_options *opts = nullptr)
: Plot (const_cast<Plane*>(plane), opts)
{}

explicit Plot (Plane &plane, const plot_options *opts = nullptr)
: Plot (reinterpret_cast<ncplane*>(&plane), opts)
{}

explicit Plot (Plane const& plane, const plot_options *opts = nullptr)
: Plot (const_cast<Plane*>(&plane), opts)
{}

explicit Plot (ncplane *plane, const plot_options *opts = nullptr)
{
if (plane == nullptr)
throw invalid_argument ("'plane' must be a valid pointer");

plot = ncplot_create (plane, opts == nullptr ? &default_options : opts);
if (plot == nullptr)
throw init_error ("notcurses failed to create a new plot");
}

~Plot ()
{
if (!is_notcurses_stopped ())
ncplot_destroy (plot);
}

int add_sample(uint64_t x, int64_t y)
{
return ncplot_add_sample (plot, x, y) >= 0;
}

int set_sample(uint64_t x, int64_t y)
{
return ncplot_set_sample (plot, x, y) >= 0;
}

Plane* get_plane () const noexcept;

private:
ncplot *plot;
};
}
#endif

0 comments on commit 9dc81f0

Please sign in to comment.