Commit e3bd9ccf authored by Paul Asmuth's avatar Paul Asmuth
Browse files

add --clear flag to img new command

parent 813201cb
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -25,12 +25,28 @@ int cmd_image_new(Context* ctx, const char** args, int arg_count) {
  uint64_t flag_height;
  flag_parser.defineUInt64("height", true, &flag_height);

  std::string flag_clear;
  flag_parser.defineString("clear", true, &flag_clear);

  auto rc = flag_parser.parseArgv(arg_count, args);
  if (!rc.isSuccess()) {
    std::cerr << "ERROR: " << rc.getMessage() << std::endl;
    return -1;
  }

  Layer target(flag_width, flag_height);

  if (!flag_clear.empty()) {
    Colour clear_colour;
    if (!clear_colour.parse(flag_clear)) {
      return -1; // FIXME error
    }

    target.clear(clear_colour);
  }

  target.writePNG(flag_out.c_str());

  return 0;
}

+2 −2
Original line number Diff line number Diff line
@@ -26,8 +26,8 @@ Layer::~Layer() {
  cairo_surface_destroy(surface);
}

void Layer::clear(double r, double g, double b, double a) {
  cairo_set_source_rgba(ctx, r, g, b, a);
void Layer::clear(const Colour& c) {
  cairo_set_source_rgba(ctx, c.red(), c.green(), c.blue(), c.alpha());
  cairo_rectangle(ctx, 0, 0, width, height);
  cairo_fill(ctx);
}
+1 −1
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ struct Layer {

  void writePNG(const char* path);

  void clear(double r, double g, double b, double a);
  void clear(const Colour& c);

  const uint32_t width;
  const uint32_t height;
+3 −2
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ using signaltk::chart::AxisDefinition;
using signaltk::chart::LineChart;
//using signaltk::chart::PointChart2D;
//using signaltk::chart::PointChart3D;
using signaltk::Colour;
using namespace signaltk::chart;
using signaltk::chart::Viewport;
using signaltk::chart::ContinuousDomain;
@@ -59,7 +60,7 @@ using signaltk::test::UnitTest;

TEST_CASE(ChartTest, TestPlotLayoutWithLeftAxis, [] () {
  Layer target(1000, 600);
  target.clear(1, 1, 1, 1);
  target.clear(Colour{1, 1, 1, 1});

  //auto axis_left = plot_layout.addAxis(AxisDefinition::LEFT);
  //axis_left->addTick(0.0);
@@ -725,7 +726,7 @@ TEST_CASE(ChartTest, TestPlotLayoutWithLeftAxis, [] () {
static signaltk::test::UnitTest::TestCase __test_simple_line_chart_(
    &ChartTest, "TestSimpleLineChart", [] () {
  Layer target(1000, 600);
  target.clear(1, 1, 1, 1);
  target.clear(Colour{ 1, 1, 1, 1 });

  auto series1 = new Series2D<double, double>("myseries1");
  series1->addDatum(10, 34);