sequence_layout.h 1.1 KB
#ifndef POINCARE_SEQUENCE_LAYOUT_H
#define POINCARE_SEQUENCE_LAYOUT_H

#include <poincare/expression.h>
#include <poincare/expression_layout.h>

namespace Poincare {

class SequenceLayout : public ExpressionLayout {
public:
  SequenceLayout(ExpressionLayout * lowerBoundLayout, ExpressionLayout * upperBoundLayout, ExpressionLayout * argumentLayout);
  ~SequenceLayout();
  SequenceLayout(const SequenceLayout& other) = delete;
  SequenceLayout(SequenceLayout&& other) = delete;
  SequenceLayout& operator=(const SequenceLayout& other) = delete;
  SequenceLayout& operator=(SequenceLayout&& other) = delete;
  constexpr static KDCoordinate k_symbolHeight = 15;
  constexpr static KDCoordinate k_symbolWidth = 9;
protected:
  constexpr static KDCoordinate k_boundHeightMargin = 2;
  ExpressionLayout * m_lowerBoundLayout;
  ExpressionLayout * m_upperBoundLayout;
  ExpressionLayout * m_argumentLayout;
private:
  KDSize computeSize() override;
  ExpressionLayout * child(uint16_t index) override;
  KDPoint positionOfChild(ExpressionLayout * child) override;
  constexpr static KDCoordinate k_argumentWidthMargin = 2;
};

}

#endif