8 {0x00, 0xFF, 0xFF, 0xFF, 0xFF},
9 {0xFF, 0x00, 0xFF, 0xFF, 0xFF},
10 {0xFF, 0x00, 0xFF, 0xFF, 0xFF},
11 {0xFF, 0xFF, 0x00, 0xFF, 0xFF},
12 {0xFF, 0xFF, 0x00, 0xFF, 0xFF},
13 {0xFF, 0xFF, 0xFF, 0x00, 0xFF},
14 {0xFF, 0xFF, 0xFF, 0x00, 0xFF},
15 {0xFF, 0xFF, 0xFF, 0xFF, 0x00},
20 m_radicandLayout(radicandLayout),
21 m_indexLayout(indexLayout)
24 if (m_indexLayout !=
nullptr) {
27 m_indexLayout->
size().
height() + k_indexHeight);
34 delete m_radicandLayout;
35 if (m_indexLayout !=
nullptr) {
41 KDSize radicandSize = m_radicandLayout->
size();
48 if (indexSize.
height() + k_indexHeight > m_radicandLayout->
baseline() + k_radixLineThickness + k_heightMargin) {
50 p.
y() + indexSize.
height() + k_indexHeight - m_radicandLayout->
baseline() - k_radixLineThickness - k_heightMargin,
52 radicandSize.
height() + 2*k_heightMargin + k_radixLineThickness), expressionColor);
54 p.
y() + indexSize.
height() + k_indexHeight - m_radicandLayout->
baseline() - k_radixLineThickness - k_heightMargin,
55 radicandSize.
width() + 2*k_widthMargin,
56 k_radixLineThickness), expressionColor);
58 p.
y() + indexSize.
height() + k_indexHeight - m_radicandLayout->
baseline() - k_radixLineThickness - k_heightMargin,
60 k_rightRadixHeight + k_radixLineThickness), expressionColor);
65 radicandSize.
height() + 2*k_heightMargin + k_radixLineThickness), expressionColor);
68 radicandSize.
width() + 2*k_widthMargin,
69 k_radixLineThickness), expressionColor);
73 k_rightRadixHeight + k_radixLineThickness), expressionColor);
79 KDSize radicandSize = m_radicandLayout->
size();
82 indexSize.
width() + 3*k_widthMargin + 2*k_radixLineThickness + radicandSize.
width(),
90 return m_radicandLayout;
102 if (
child == m_indexLayout) {
105 }
else if (
child == m_radicandLayout) {
106 x = indexSize.
width() + 2*k_widthMargin + k_radixLineThickness;
void render(KDContext *ctx, KDPoint p, KDColor expressionColor, KDColor backgroundColor) override
ExpressionLayout * child(uint16_t index) override
NthRootLayout(ExpressionLayout *radicandLayout, ExpressionLayout *indexLayout)
constexpr KDCoordinate width() const
void blendRectWithMask(KDRect rect, KDColor color, const uint8_t *mask, KDColor *workingBuffer)
static constexpr KDCoordinate k_leftRadixWidth
KDPoint positionOfChild(ExpressionLayout *child) override
const uint8_t radixPixel[NthRootLayout::k_leftRadixHeight][NthRootLayout::k_leftRadixWidth]
void fillRect(KDRect rect, KDColor color)
static constexpr KDCoordinate k_leftRadixHeight
KDSize computeSize() override
void setParent(ExpressionLayout *parent)
constexpr KDCoordinate height() const