void LEDTestController::ContentView::layoutSubviews() { KDSize ledSize = m_ledView.minimalSizeForOptimalDisplay(); m_ledView.setFrame(KDRect((Ion::Display::Width-ledSize.width()-k_indicatorSize-k_indicatorMargin)/2, k_arrowLength+2*k_arrowMargin, ledSize.width(), ledSize.height())); m_ledColorIndicatorView.setFrame(KDRect((Ion::Display::Width-k_indicatorSize)/2+k_indicatorMargin/2+ledSize.width()/2, k_arrowLength+2*k_arrowMargin, k_indicatorSize, k_indicatorSize)); m_ledColorOutlineView.setFrame(KDRect((Ion::Display::Width-k_indicatorSize)/2+k_indicatorMargin/2+ledSize.width()/2-1, k_arrowLength+2*k_arrowMargin-1, k_indicatorSize+2, k_indicatorSize+2)); m_arrowView.setFrame(KDRect(0, k_arrowMargin, bounds().width(), k_arrowLength)); }
void Cell::layoutSubviews() { KDCoordinate width = bounds().width(); KDCoordinate height = bounds().height(); m_labelView.setFrame(KDRect(1+k_iconWidth+2*k_iconMargin, 1, width-2-k_iconWidth-2*k_iconMargin - k_chevronWidth, height-2)); m_iconView.setFrame(KDRect(1+k_iconMargin, (height - k_iconHeight)/2, k_iconWidth, k_iconHeight)); m_chevronView.setFrame(KDRect(width-1-k_chevronWidth-k_chevronMargin, 1, k_chevronWidth, height - 2)); }
void CalculationController::ContentView::layoutSubviews() { KDCoordinate titleHeight = KDText::charSize(KDText::FontSize::Small).height()+k_titleHeightMargin; m_titleView.setFrame(KDRect(0, 0, bounds().width(), titleHeight)); KDCoordinate calculationHeight = ResponderImageCell::k_oneCellHeight+2*k_tableMargin; m_selectableTableView->setFrame(KDRect(0, titleHeight, bounds().width(), calculationHeight)); m_lawCurveView.setFrame(KDRect(0, titleHeight+calculationHeight, bounds().width(), bounds().height() - calculationHeight - titleHeight)); }
void Cell::drawRect(KDContext * ctx, KDRect rect) const { KDCoordinate width = bounds().width(); KDCoordinate height = bounds().height(); KDColor backgroundColor = isHighlighted() ? Palette::Select : KDColorWhite; ctx->fillRect(KDRect(1, 1, width-2, height-1), backgroundColor); ctx->fillRect(KDRect(0, 0, width, 1), Palette::GreyBright); ctx->fillRect(KDRect(0, 1, 1, height-1), Palette::GreyBright); ctx->fillRect(KDRect(width-1, 1, 1, height-1), Palette::GreyBright); ctx->fillRect(KDRect(0, height-1, width, 1), Palette::GreyBright); }
void EditorView::layoutSubviews() { m_gutterView.setOffset(0); KDCoordinate gutterWidth = m_gutterView.minimalSizeForOptimalDisplay().width(); m_gutterView.setFrame(KDRect(0, 0, gutterWidth, bounds().height())); m_textArea.setFrame(KDRect( gutterWidth, 0, bounds().width()-gutterWidth, bounds().height() )); }
void TabViewController::ContentView::layoutSubviews() { KDRect tabViewFrame = KDRect( 0, 0, m_frame.width(), Metric::TabHeight ); m_tabView.setFrame(tabViewFrame); if (m_activeView) { KDRect activeViewFrame = KDRect( 0, Metric::TabHeight, m_frame.width(), m_frame.height() - Metric::TabHeight ); m_activeView->setFrame(activeViewFrame); } }
void KDContext::writeChar(char character, KDPoint p, KDText::FontSize size, KDColor textColor, KDColor backgroundColor, bool transparentBackground) { if (character == '\n' || character == '\t') { return; } char firstCharacter = size == KDText::FontSize::Large ? BITMAP_LargeFont_FIRST_CHARACTER : BITMAP_SmallFont_FIRST_CHARACTER; int characterHeight = size == KDText::FontSize::Large ? BITMAP_LargeFont_CHARACTER_HEIGHT : BITMAP_SmallFont_CHARACTER_HEIGHT; int characterWidth = size == KDText::FontSize::Large ? BITMAP_LargeFont_CHARACTER_WIDTH : BITMAP_SmallFont_CHARACTER_WIDTH; KDColor * characterBuffer = size == KDText::FontSize::Large ? largeCharacterBuffer : smallCharacterBuffer; KDRect absoluteRect = absoluteFillRect(KDRect(p, characterWidth, characterHeight)); if (transparentBackground) { pullRect(absoluteRect, characterBuffer); } KDCoordinate startingI = m_clippingRect.x() - p.translatedBy(m_origin).x(); KDCoordinate startingJ = m_clippingRect.y() - p.translatedBy(m_origin).y(); startingI = startingI < 0 ? 0 : startingI; startingJ = startingJ < 0 ? 0 : startingJ; for (KDCoordinate j=0; j<absoluteRect.height(); j++) { for (KDCoordinate i=0; i<absoluteRect.width(); i++) { KDColor * currentPixelAdress = characterBuffer + i + absoluteRect.width()*j; uint8_t intensity = 0; if (size == KDText::FontSize::Large) { intensity = bitmapLargeFont[(uint8_t)character-(uint8_t)firstCharacter][j + startingJ][i +startingI]; } else { intensity = bitmapSmallFont[(uint8_t)character-(uint8_t)firstCharacter][j + startingJ][i +startingI]; } KDColor backColor = transparentBackground ? *currentPixelAdress : backgroundColor; *currentPixelAdress = KDColor::blend(textColor, backColor, intensity); } } pushRect(absoluteRect, characterBuffer); }
void HistoryViewCell::layoutSubviews() { KDCoordinate width = bounds().width(); KDCoordinate height = bounds().height(); KDSize inputSize = m_inputView.minimalSizeForOptimalDisplay(); if (inputSize.width() + Metric::HistoryHorizontalMargin > width) { m_inputView.setFrame(KDRect(Metric::HistoryHorizontalMargin, k_digitVerticalMargin, width - Metric::HistoryHorizontalMargin, inputSize.height())); } else { m_inputView.setFrame(KDRect(Metric::HistoryHorizontalMargin, k_digitVerticalMargin, inputSize.width(), inputSize.height())); } KDSize outputSize = m_scrollableOutputView.minimalSizeForOptimalDisplay(); if (outputSize.width() + Metric::HistoryHorizontalMargin > width) { m_scrollableOutputView.setFrame(KDRect(Metric::HistoryHorizontalMargin, inputSize.height() + 2*k_digitVerticalMargin, width - Metric::HistoryHorizontalMargin, height - inputSize.height() - 3*k_digitVerticalMargin)); } else { m_scrollableOutputView.setFrame(KDRect(width - outputSize.width() - Metric::HistoryHorizontalMargin, inputSize.height() + 2*k_digitVerticalMargin, outputSize.width(), height - inputSize.height() - 3*k_digitVerticalMargin)); } }
KDRect TextArea::ContentView::characterFrameAtIndex(size_t index) const { KDSize charSize = KDText::charSize(m_fontSize); Text::Position p = m_text.positionAtIndex(index); return KDRect( p.column() * charSize.width(), p.line() * charSize.height(), charSize.width(), charSize.height() ); }
void LeftParenthesisLayout::render(KDContext * ctx, KDPoint p, KDColor expressionColor, KDColor backgroundColor) { KDRect frame(p.x()+ParenthesisLayout::k_externWidthMargin, p.y()+ParenthesisLayout::k_externHeightMargin, ParenthesisLayout::k_parenthesisCurveWidth, ParenthesisLayout::k_parenthesisCurveHeight); ctx->blendRectWithMask(frame, expressionColor, (const uint8_t *)topLeftCurve, (KDColor *)(ParenthesisLayout::s_parenthesisWorkingBuffer)); frame = KDRect(p.x()+ParenthesisLayout::k_externWidthMargin, p.y() + size().height() - ParenthesisLayout::k_parenthesisCurveHeight - ParenthesisLayout::k_externHeightMargin, ParenthesisLayout::k_parenthesisCurveWidth, ParenthesisLayout::k_parenthesisCurveHeight); ctx->blendRectWithMask(frame, expressionColor, (const uint8_t *)bottomLeftCurve, (KDColor *)(ParenthesisLayout::s_parenthesisWorkingBuffer)); ctx->fillRect(KDRect(p.x()+ParenthesisLayout::k_externWidthMargin, p.y()+ParenthesisLayout::k_parenthesisCurveHeight+ParenthesisLayout::k_externHeightMargin, ParenthesisLayout::k_lineThickness, size().height() - 2*(ParenthesisLayout::k_parenthesisCurveHeight+ParenthesisLayout::k_externHeightMargin)), expressionColor); }
void FunctionGraphView::reloadBetweenBounds(float start, float end) { if (start == end) { return; } float pixelLowerBound = floatToPixel(Axis::Horizontal, start)-2.0; float pixelUpperBound = floatToPixel(Axis::Horizontal, end)+4.0; /* We exclude the banner frame from the dirty zone to avoid unnecessary * redrawing */ KDRect dirtyZone(KDRect(pixelLowerBound, 0, pixelUpperBound-pixelLowerBound, bounds().height()-m_bannerView->bounds().height())); markRectAsDirty(dirtyZone); }
void PopUpController::ContentView::layoutSubviews() { KDCoordinate height = bounds().height(); KDCoordinate width = bounds().width(); KDCoordinate textHeight = KDText::charSize(KDText::FontSize::Small).height(); m_warningTextView.setFrame(KDRect(0, k_topMargin, width, textHeight)); m_messageTextView1.setFrame(KDRect(0, k_topMargin+k_paragraphHeight+textHeight, width, textHeight)); m_messageTextView2.setFrame(KDRect(0, k_topMargin+k_paragraphHeight+2*textHeight, width, textHeight)); m_messageTextView3.setFrame(KDRect(0, k_topMargin+k_paragraphHeight+3*textHeight, width, textHeight)); m_messageTextView4.setFrame(KDRect(0, k_topMargin+k_paragraphHeight+4*textHeight, width, textHeight)); m_cancelButton.setFrame(KDRect(k_buttonMargin, height-k_buttonMargin-k_buttonHeight, (width-3*k_buttonMargin)/2, k_buttonHeight)); m_okButton.setFrame(KDRect(2*k_buttonMargin+(width-3*k_buttonMargin)/2, height-k_buttonMargin-k_buttonHeight, (width-3*k_buttonMargin)/2, k_buttonHeight)); }
void BracketPairLayout::render(KDContext * ctx, KDPoint p, KDColor expressionColor, KDColor backgroundColor) { const KDCoordinate k_widthMargin = widthMargin(); const KDCoordinate k_externWidthMargin = externWidthMargin(); KDSize operandSize = operandLayout()->size(); KDCoordinate verticalBarHeight = operandLayout()->size().height() + 2*k_verticalMargin; ctx->fillRect(KDRect(p.x()+k_externWidthMargin, p.y()+verticalExternMargin(), k_lineThickness, verticalBarHeight), expressionColor); ctx->fillRect(KDRect(p.x()+k_externWidthMargin+operandSize.width()+2*k_widthMargin+k_lineThickness, p.y()+verticalExternMargin(), k_lineThickness, verticalBarHeight), expressionColor); if (renderTopBar()) { ctx->fillRect(KDRect(p.x()+k_externWidthMargin, p.y()+verticalExternMargin(), k_bracketWidth, k_lineThickness), expressionColor); ctx->fillRect(KDRect(p.x()+k_externWidthMargin+2*k_lineThickness+operandSize.width()+2*k_widthMargin-k_bracketWidth, p.y() + verticalExternMargin(), k_bracketWidth, k_lineThickness), expressionColor); } if (renderBottomBar()) { ctx->fillRect(KDRect(p.x()+k_externWidthMargin, p.y()+verticalExternMargin()+verticalBarHeight-k_lineThickness, k_bracketWidth, k_lineThickness), expressionColor); ctx->fillRect(KDRect(p.x()+k_externWidthMargin+2*k_lineThickness+operandSize.width()+2*k_widthMargin-k_bracketWidth, p.y()+verticalExternMargin()+verticalBarHeight-k_lineThickness, k_bracketWidth, k_lineThickness), expressionColor); } }
void ExpressionField::drawRect(KDContext * ctx, KDRect rect) const { // Draw the separator ctx->fillRect(KDRect(0, 0, bounds().width(), k_separatorThickness), Palette::GreyMiddle); }
KDRect TextField::ContentView::characterFrameAtIndex(size_t index) const { KDSize charSize = KDText::charSize(m_fontSize); KDSize textSize = KDText::stringSize(text(), m_fontSize); KDCoordinate cursorWidth = m_cursorView.minimalSizeForOptimalDisplay().width(); return KDRect(m_horizontalAlignment*(m_frame.width() - textSize.width()-cursorWidth)+ index * charSize.width(), m_verticalAlignment*(m_frame.height() - charSize.height()), charSize); }
void RightSquareBracketLayout::render(KDContext * ctx, KDPoint p, KDColor expressionColor, KDColor backgroundColor) { ctx->fillRect(KDRect(p.x()+k_widthMargin, p.y(), k_lineThickness, operandHeight()), expressionColor); ctx->fillRect(KDRect(p.x()+k_widthMargin-k_bracketWidth+1, p.y(), k_bracketWidth, k_lineThickness), expressionColor); ctx->fillRect(KDRect(p.x()+k_widthMargin-k_bracketWidth+1, p.y() + operandHeight(), k_bracketWidth, k_lineThickness), expressionColor); }