#pragma once

#include "core/track/trackDefs.h"
#include "layer.h"

class MainWindow;
//--------------------------------------------------------------
class PianoRollLayer : public Layer
{
  public:
  PianoRollLayer()                                         = delete;      // Default constructor
  virtual ~PianoRollLayer()                                = default;     // Default destructor
  PianoRollLayer(const PianoRollLayer &obj)                = delete;      // Copy constructor
  PianoRollLayer(PianoRollLayer &&obj) noexcept            = delete;      // Move constructor
  PianoRollLayer &operator=(const PianoRollLayer &obj)     = delete;      // Copy assignment operator
  PianoRollLayer &operator=(PianoRollLayer &&obj) noexcept = delete;      // Move assignment operator

  explicit PianoRollLayer(MainWindow &owner);     // Constructor

  void update(std::chrono::nanoseconds dt) override;     // Update the layer state
  void render() const override;                          // Render the layer

  protected:
  std::chrono::milliseconds m_visibleDuration = std::chrono::seconds(15);     // Duration of the visible track window in milliseconds
};
//--------------------------------------------------------------
