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

add Element::renderTo interface, implement renderElements

parent 4f675a44
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -11,14 +11,18 @@
#include <atomic>
#include <memory>
#include <string>
#include "utils/return_code.h"

namespace signaltk {
class Layer;

class Element {
public:

  virtual ~Element() = default;

  virtual ReturnCode renderTo(Layer* frame) const = 0;

};

using ElementRef = std::unique_ptr<Element>;
+13 −0
Original line number Diff line number Diff line
@@ -44,5 +44,18 @@ ReturnCode buildElementTree(
  return buildElementTree(plist, tree);
}

ReturnCode renderElements(
    const ElementTree& tree,
    Layer* frame) {
  for (const auto& e : tree.roots) {
    if (auto rc = e->renderTo(frame); !rc.isSuccess()) {
      return rc;
    }
  }

  return ReturnCode::success();
}


} // namespace signaltk