From f51ae5db1285618b5fd028c02b3ed208a1881c95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Thu, 19 Jan 2017 16:58:33 +0100 Subject: [PATCH] [kandinsky] Introduce two fonts: small font and large font Change-Id: I502dfa88d627b09ac5af76155140af63547025cd --- apps/banner_view.cpp | 4 +- apps/calculation/text_field.cpp | 2 +- apps/curve_view.cpp | 6 +- apps/graph/function_title_cell.cpp | 4 +- apps/graph/function_title_cell.h | 2 +- apps/graph/graph/banner_view.cpp | 6 +- apps/graph/list/list_controller.cpp | 4 +- apps/graph/list/new_function_cell.cpp | 2 +- apps/graph/values/values_controller.cpp | 11 +-- apps/home/app_cell.cpp | 1 + apps/interactive_curve_view_controller.cpp | 6 +- .../finite_integral_calculation.cpp | 6 +- .../calculation/left_integral_calculation.cpp | 4 +- .../right_integral_calculation.cpp | 4 +- apps/probability/calculation_controller.cpp | 20 ++--- apps/probability/calculation_controller.h | 1 - apps/probability/cell.cpp | 2 +- apps/probability/parameters_controller.cpp | 6 +- apps/regression/banner_view.cpp | 10 +-- apps/regression/calculation_controller.cpp | 5 +- .../even_odd_double_buffer_text_cell.cpp | 4 +- apps/statistics/box_banner_view.cpp | 4 +- apps/statistics/calculation_controller.cpp | 4 + apps/statistics/histogram_banner_view.cpp | 6 +- apps/statistics/histogram_controller.cpp | 4 +- apps/store_controller.cpp | 9 ++- apps/toolbox_leaf_cell.cpp | 4 +- apps/variable_box_leaf_cell.cpp | 4 +- apps/zoom_parameter_controller.cpp | 20 ++--- escher/include/escher/buffer_text_view.h | 2 +- escher/include/escher/button.h | 2 +- escher/include/escher/editable_text_cell.h | 2 +- .../escher/editable_text_menu_list_cell.h | 3 +- .../escher/even_odd_buffer_text_cell.h | 2 +- .../escher/even_odd_editable_text_cell.h | 2 +- .../escher/even_odd_pointer_text_cell.h | 2 +- escher/include/escher/pointer_text_view.h | 2 +- escher/include/escher/text_field.h | 6 +- escher/include/escher/text_view.h | 3 +- .../src/alternate_empty_view_controller.cpp | 2 +- escher/src/buffer_text_view.cpp | 4 +- escher/src/button.cpp | 4 +- escher/src/editable_text_cell.cpp | 4 +- escher/src/editable_text_menu_list_cell.cpp | 6 +- escher/src/even_odd_buffer_text_cell.cpp | 4 +- escher/src/even_odd_editable_text_cell.cpp | 4 +- escher/src/even_odd_pointer_text_cell.cpp | 4 +- escher/src/input_view_controller.cpp | 2 +- escher/src/menu_list_cell.cpp | 2 +- escher/src/pointer_text_view.cpp | 4 +- escher/src/stack_view.cpp | 2 +- escher/src/tab_view_cell.cpp | 4 +- escher/src/text_field.cpp | 15 ++-- escher/src/text_menu_list_cell.cpp | 2 +- escher/src/text_view.cpp | 11 +-- escher/src/warning_controller.cpp | 2 +- kandinsky/Makefile | 30 ++++--- kandinsky/fonts/largePixelFont.ttf | Bin 0 -> 223324 bytes kandinsky/fonts/rasterizer.c | 31 ++++---- kandinsky/fonts/smallPixelFont.ttf | Bin 0 -> 170944 bytes kandinsky/include/kandinsky/context.h | 9 ++- kandinsky/include/kandinsky/text.h | 6 +- kandinsky/src/context_text.cpp | 74 ++++++++++-------- kandinsky/src/text.cpp | 10 ++- poincare/src/layout/fraction_layout.cpp | 2 +- poincare/src/layout/matrix_layout.cpp | 2 +- poincare/src/layout/string_layout.cpp | 6 +- quiz/src/runner.cpp | 4 +- 68 files changed, 238 insertions(+), 203 deletions(-) create mode 100644 kandinsky/fonts/largePixelFont.ttf create mode 100644 kandinsky/fonts/smallPixelFont.ttf diff --git a/apps/banner_view.cpp b/apps/banner_view.cpp index 7202e62e1..34ab7ea68 100644 --- a/apps/banner_view.cpp +++ b/apps/banner_view.cpp @@ -18,7 +18,7 @@ void BannerView::setLegendAtIndex(char * text, int index) { } KDSize BannerView::minimalSizeForOptimalDisplay() { - return KDSize(0, KDText::stringSize(" ").height()*numberOfLines()); + return KDSize(0, KDText::stringSize(" ", KDText::FontSize::Small).height()*numberOfLines()); } int BannerView::numberOfSubviews() const { @@ -73,7 +73,7 @@ int BannerView::numberOfLines() { KDCoordinate usedWidth = 0; KDCoordinate lineNumber = 0; for (int i = 0; i < numberOfSubviews(); i++) { - KDCoordinate textWidth = KDText::stringSize(textViewAtIndex(i)->text()).width(); + KDCoordinate textWidth = KDText::stringSize(textViewAtIndex(i)->text(), KDText::FontSize::Small).width(); if (usedWidth+textWidth > width) { usedWidth = textWidth; lineNumber++; diff --git a/apps/calculation/text_field.cpp b/apps/calculation/text_field.cpp index 3f0e999e8..e47e5e89a 100644 --- a/apps/calculation/text_field.cpp +++ b/apps/calculation/text_field.cpp @@ -3,7 +3,7 @@ namespace Calculation { TextField::TextField(Responder * parentResponder, char * textBuffer, size_t textBufferSize, TextFieldDelegate * delegate) : - ::TextField(parentResponder, textBuffer, textBuffer, textBufferSize, delegate) + ::TextField(parentResponder, textBuffer, textBuffer, textBufferSize, KDText::FontSize::Large, delegate) { m_isEditing = true; } diff --git a/apps/curve_view.cpp b/apps/curve_view.cpp index 9fc25662e..9c4245a92 100644 --- a/apps/curve_view.cpp +++ b/apps/curve_view.cpp @@ -99,7 +99,7 @@ void CurveView::drawLabels(KDContext * ctx, KDRect rect, Axis axis, bool shiftOr float end = max(axis); int i = 0; for (float x = start; x < end; x += 2.0f*step) { - KDSize textSize = KDText::stringSize(label(axis, i)); + KDSize textSize = KDText::stringSize(label(axis, i), KDText::FontSize::Small); KDPoint origin(floatToPixel(Axis::Horizontal, x) - textSize.width()/2, floatToPixel(Axis::Vertical, 0.0f) + k_labelMargin); if (axis == Axis::Vertical) { origin = KDPoint(floatToPixel(Axis::Horizontal, 0.0f) + k_labelMargin, floatToPixel(Axis::Vertical, x) - textSize.height()/2); @@ -107,8 +107,8 @@ void CurveView::drawLabels(KDContext * ctx, KDRect rect, Axis axis, bool shiftOr if (-step < x && x < step && shiftOrigin) { origin = KDPoint(floatToPixel(Axis::Horizontal, 0.0f) + k_labelMargin, floatToPixel(Axis::Vertical, 0.0f) + k_labelMargin); } - if (rect.intersects(KDRect(origin, KDText::stringSize(label(axis, i))))) { - ctx->blendString(label(axis, i), origin, KDColorBlack); + if (rect.intersects(KDRect(origin, KDText::stringSize(label(axis, i), KDText::FontSize::Small)))) { + ctx->blendString(label(axis, i), KDText::FontSize::Small, origin, KDColorBlack); } i++; } diff --git a/apps/graph/function_title_cell.cpp b/apps/graph/function_title_cell.cpp index 08116dcff..415777318 100644 --- a/apps/graph/function_title_cell.cpp +++ b/apps/graph/function_title_cell.cpp @@ -3,9 +3,9 @@ namespace Graph { -FunctionTitleCell::FunctionTitleCell(Orientation orientation) : +FunctionTitleCell::FunctionTitleCell(Orientation orientation, KDText::FontSize size) : EvenOddCell(), - m_bufferTextView(0.5f, 0.5f), + m_bufferTextView(size, 0.5f, 0.5f), m_orientation(orientation) { } diff --git a/apps/graph/function_title_cell.h b/apps/graph/function_title_cell.h index 05cf15d5d..956f360b9 100644 --- a/apps/graph/function_title_cell.h +++ b/apps/graph/function_title_cell.h @@ -10,7 +10,7 @@ public: HorizontalIndicator, VerticalIndicator }; - FunctionTitleCell(Orientation orientation); + FunctionTitleCell(Orientation orientation, KDText::FontSize size); void setColor(KDColor color); void setText(const char * textContent); void drawRect(KDContext * ctx, KDRect rect) const override; diff --git a/apps/graph/graph/banner_view.cpp b/apps/graph/graph/banner_view.cpp index 3f214f8e5..2a20ba498 100644 --- a/apps/graph/graph/banner_view.cpp +++ b/apps/graph/graph/banner_view.cpp @@ -3,9 +3,9 @@ namespace Graph { BannerView::BannerView() : - m_abscissaView(0.5f, 0.5f), - m_functionView(0.5f, 0.5f), - m_derivativeView(0.5f, 0.5f), + m_abscissaView(KDText::FontSize::Small, 0.5f, 0.5f), + m_functionView(KDText::FontSize::Small, 0.5f, 0.5f), + m_derivativeView(KDText::FontSize::Small, 0.5f, 0.5f), m_displayDerivative(false) { } diff --git a/apps/graph/list/list_controller.cpp b/apps/graph/list/list_controller.cpp index 8bba76947..d190bd4e1 100644 --- a/apps/graph/list/list_controller.cpp +++ b/apps/graph/list/list_controller.cpp @@ -7,8 +7,8 @@ namespace Graph { ListController::ListController(Responder * parentResponder, FunctionStore * functionStore, HeaderViewController * header) : ViewController(parentResponder), HeaderViewDelegate(header), - m_functionTitleCells{FunctionTitleCell(FunctionTitleCell::Orientation::VerticalIndicator), FunctionTitleCell(FunctionTitleCell::Orientation::VerticalIndicator), FunctionTitleCell(FunctionTitleCell::Orientation::VerticalIndicator), - FunctionTitleCell(FunctionTitleCell::Orientation::VerticalIndicator), FunctionTitleCell(FunctionTitleCell::Orientation::VerticalIndicator), FunctionTitleCell(FunctionTitleCell::Orientation::VerticalIndicator)}, + m_functionTitleCells{FunctionTitleCell(FunctionTitleCell::Orientation::VerticalIndicator, KDText::FontSize::Large), FunctionTitleCell(FunctionTitleCell::Orientation::VerticalIndicator, KDText::FontSize::Large), FunctionTitleCell(FunctionTitleCell::Orientation::VerticalIndicator, KDText::FontSize::Large), + FunctionTitleCell(FunctionTitleCell::Orientation::VerticalIndicator, KDText::FontSize::Large), FunctionTitleCell(FunctionTitleCell::Orientation::VerticalIndicator, KDText::FontSize::Large), FunctionTitleCell(FunctionTitleCell::Orientation::VerticalIndicator, KDText::FontSize::Large)}, m_selectableTableView(SelectableTableView(this, this)), m_functionStore(functionStore), m_parameterController(ParameterController(this, functionStore)) diff --git a/apps/graph/list/new_function_cell.cpp b/apps/graph/list/new_function_cell.cpp index 2d5ec470f..466ee6c08 100644 --- a/apps/graph/list/new_function_cell.cpp +++ b/apps/graph/list/new_function_cell.cpp @@ -5,7 +5,7 @@ namespace Graph { NewFunctionCell::NewFunctionCell() : EvenOddCell(), - m_pointerTextView(PointerTextView("Ajouter une fonction", 0.5f, 0.5f)) + m_pointerTextView(PointerTextView(KDText::FontSize::Large, "Ajouter une fonction", 0.5f, 0.5f)) { } diff --git a/apps/graph/values/values_controller.cpp b/apps/graph/values/values_controller.cpp index 903c27ce0..2c2ed295b 100644 --- a/apps/graph/values/values_controller.cpp +++ b/apps/graph/values/values_controller.cpp @@ -9,10 +9,11 @@ namespace Graph { ValuesController::ValuesController(Responder * parentResponder, FunctionStore * functionStore, HeaderViewController * header) : EditableCellTableViewController(parentResponder, k_topMargin, k_rightMargin, k_bottomMargin, k_leftMargin), HeaderViewDelegate(header), - m_functionTitleCells{FunctionTitleCell(FunctionTitleCell::Orientation::HorizontalIndicator), FunctionTitleCell(FunctionTitleCell::Orientation::HorizontalIndicator), FunctionTitleCell(FunctionTitleCell::Orientation::HorizontalIndicator), - FunctionTitleCell(FunctionTitleCell::Orientation::HorizontalIndicator), FunctionTitleCell(FunctionTitleCell::Orientation::HorizontalIndicator)}, - m_abscissaCells{EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer),EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), - EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer)}, + m_abscissaTitleCell(EvenOddPointerTextCell(KDText::FontSize::Small)), + m_functionTitleCells{FunctionTitleCell(FunctionTitleCell::Orientation::HorizontalIndicator, KDText::FontSize::Small), FunctionTitleCell(FunctionTitleCell::Orientation::HorizontalIndicator, KDText::FontSize::Small), + FunctionTitleCell(FunctionTitleCell::Orientation::HorizontalIndicator, KDText::FontSize::Small), FunctionTitleCell(FunctionTitleCell::Orientation::HorizontalIndicator, KDText::FontSize::Small), FunctionTitleCell(FunctionTitleCell::Orientation::HorizontalIndicator, KDText::FontSize::Small)}, + m_abscissaCells{EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Small), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Small), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Small), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Small), + EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Small), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Small), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Small), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Small)}, m_functionStore(functionStore), m_intervalParameterController(IntervalParameterController(this, &m_interval)), m_abscissaParameterController(AbscissaParameterController(this, &m_intervalParameterController)), @@ -22,7 +23,7 @@ ValuesController::ValuesController(Responder * parentResponder, FunctionStore * ValuesController * valuesController = (ValuesController *) context; StackViewController * stack = ((StackViewController *)valuesController->stackController()); stack->push(valuesController->intervalParameterController()); - }, this))) + }, this), KDText::FontSize::Small)) { m_interval.setStart(0); m_interval.setEnd(10); diff --git a/apps/home/app_cell.cpp b/apps/home/app_cell.cpp index c02ac0f11..3f134885b 100644 --- a/apps/home/app_cell.cpp +++ b/apps/home/app_cell.cpp @@ -5,6 +5,7 @@ namespace Home { AppCell::AppCell() : TableViewCell(), + m_nameView(PointerTextView(KDText::FontSize::Small)), m_visible(true) { } diff --git a/apps/interactive_curve_view_controller.cpp b/apps/interactive_curve_view_controller.cpp index 55c1a482f..0aa258262 100644 --- a/apps/interactive_curve_view_controller.cpp +++ b/apps/interactive_curve_view_controller.cpp @@ -13,17 +13,17 @@ InteractiveCurveViewController::InteractiveCurveViewController(Responder * paren InteractiveCurveViewController * graphController = (InteractiveCurveViewController *) context; StackViewController * stack = graphController->stackController(); stack->push(graphController->rangeParameterController()); - }, this)), + }, this), KDText::FontSize::Small), m_zoomButton(this, "Zoom", Invocation([](void * context, void * sender) { InteractiveCurveViewController * graphController = (InteractiveCurveViewController *) context; StackViewController * stack = graphController->stackController(); stack->push(graphController->zoomParameterController()); - }, this)), + }, this), KDText::FontSize::Small), m_defaultInitialisationButton(this, "Initialisation", Invocation([](void * context, void * sender) { InteractiveCurveViewController * graphController = (InteractiveCurveViewController *) context; StackViewController * stack = graphController->stackController(); stack->push(graphController->initialisationParameterController()); - }, this)) + }, this), KDText::FontSize::Small) { } diff --git a/apps/probability/calculation/finite_integral_calculation.cpp b/apps/probability/calculation/finite_integral_calculation.cpp index 4038ffd8c..e935cf640 100644 --- a/apps/probability/calculation/finite_integral_calculation.cpp +++ b/apps/probability/calculation/finite_integral_calculation.cpp @@ -20,12 +20,12 @@ int FiniteIntegralCalculation::numberOfParameters() { const char * FiniteIntegralCalculation::legendForParameterAtIndex(int index) { assert(index >= 0 && index < 3); if (index == 0) { - return "P( "; + return "P("; } if (index == 1) { - return " <= X <= "; + return "<=X<="; } - return " )= "; + return ")="; } void FiniteIntegralCalculation::setParameterAtIndex(float f, int index) { diff --git a/apps/probability/calculation/left_integral_calculation.cpp b/apps/probability/calculation/left_integral_calculation.cpp index 2b245e747..2f1217ebc 100644 --- a/apps/probability/calculation/left_integral_calculation.cpp +++ b/apps/probability/calculation/left_integral_calculation.cpp @@ -19,9 +19,9 @@ int LeftIntegralCalculation::numberOfParameters() { const char * LeftIntegralCalculation::legendForParameterAtIndex(int index) { assert(index >= 0 && index < 2); if (index == 0) { - return "P(X <= "; + return "P(X<="; } - return ") = "; + return ")="; } void LeftIntegralCalculation::setParameterAtIndex(float f, int index) { diff --git a/apps/probability/calculation/right_integral_calculation.cpp b/apps/probability/calculation/right_integral_calculation.cpp index fbc5acb4f..6e30bd883 100644 --- a/apps/probability/calculation/right_integral_calculation.cpp +++ b/apps/probability/calculation/right_integral_calculation.cpp @@ -19,9 +19,9 @@ int RightIntegralCalculation::numberOfParameters() { const char * RightIntegralCalculation::legendForParameterAtIndex(int index) { assert(index >= 0 && index < 2); if (index == 0) { - return "P( "; + return "P("; } - return " <= X ) = "; + return "<=X)="; } void RightIntegralCalculation::setParameterAtIndex(float f, int index) { diff --git a/apps/probability/calculation_controller.cpp b/apps/probability/calculation_controller.cpp index 25d03132e..20526d06a 100644 --- a/apps/probability/calculation_controller.cpp +++ b/apps/probability/calculation_controller.cpp @@ -11,9 +11,10 @@ namespace Probability { CalculationController::ContentView::ContentView(Responder * parentResponder, CalculationController * calculationController, Calculation * calculation) : m_lawCurveView(LawCurveView()), m_imageTableView(ImageTableView(parentResponder, calculation, calculationController)), - m_calculationCell{EditableTextCell(parentResponder, calculationController, m_draftTextBuffer), - EditableTextCell(parentResponder, calculationController, m_draftTextBuffer), - EditableTextCell(parentResponder, calculationController, m_draftTextBuffer)}, + m_text{PointerTextView(KDText::FontSize::Large), PointerTextView(KDText::FontSize::Large), PointerTextView(KDText::FontSize::Large)}, + m_calculationCell{EditableTextCell(parentResponder, calculationController, m_draftTextBuffer, KDText::FontSize::Large), + EditableTextCell(parentResponder, calculationController, m_draftTextBuffer, KDText::FontSize::Large), + EditableTextCell(parentResponder, calculationController, m_draftTextBuffer, KDText::FontSize::Large)}, m_calculation(calculation) { } @@ -69,24 +70,25 @@ void CalculationController::ContentView::willDisplayEditableCellAtIndex(int inde void CalculationController::ContentView::layoutSubviews() { markRectAsDirty(bounds()); + KDSize charSize = KDText::stringSize(" ", KDText::FontSize::Large); KDCoordinate xCoordinate = 0; m_lawCurveView.setFrame(KDRect(0, ImageTableView::k_imageHeight, bounds().width(), bounds().height() - ImageTableView::k_imageHeight)); m_imageTableView.setFrame(KDRect(xCoordinate, 0, ImageTableView::k_imageWidth, 3*ImageTableView::k_imageHeight)); xCoordinate += ImageTableView::k_imageWidth + k_textMargin; KDCoordinate numberOfCharacters = strlen(m_calculation->legendForParameterAtIndex(0)); - m_text[0].setFrame(KDRect(xCoordinate, 0, numberOfCharacters*k_charWidth, ImageTableView::k_imageHeight)); - xCoordinate += numberOfCharacters*k_charWidth + k_textMargin; + m_text[0].setFrame(KDRect(xCoordinate, 0, numberOfCharacters*charSize.width(), ImageTableView::k_imageHeight)); + xCoordinate += numberOfCharacters*charSize.width() + k_textMargin; m_calculationCell[0].setFrame(KDRect(xCoordinate, 0, k_textFieldWidth, ImageTableView::k_imageHeight)); xCoordinate += k_textFieldWidth + k_textMargin; numberOfCharacters = strlen(m_calculation->legendForParameterAtIndex(1)); - m_text[1].setFrame(KDRect(xCoordinate, 0, numberOfCharacters*k_charWidth, ImageTableView::k_imageHeight)); - xCoordinate += numberOfCharacters*k_charWidth + k_textMargin; + m_text[1].setFrame(KDRect(xCoordinate, 0, numberOfCharacters*charSize.width(), ImageTableView::k_imageHeight)); + xCoordinate += numberOfCharacters*charSize.width() + k_textMargin; m_calculationCell[1].setFrame(KDRect(xCoordinate, 0, k_textFieldWidth, ImageTableView::k_imageHeight)); xCoordinate += k_textFieldWidth + k_textMargin; if (m_calculation->numberOfParameters() > 2) { numberOfCharacters = strlen(m_calculation->legendForParameterAtIndex(2));; - m_text[2].setFrame(KDRect(xCoordinate, 0, numberOfCharacters*k_charWidth, ImageTableView::k_imageHeight)); - xCoordinate += numberOfCharacters*k_charWidth + k_textMargin; + m_text[2].setFrame(KDRect(xCoordinate, 0, numberOfCharacters*charSize.width(), ImageTableView::k_imageHeight)); + xCoordinate += numberOfCharacters*charSize.width() + k_textMargin; m_calculationCell[2].setFrame(KDRect(xCoordinate, 0, k_textFieldWidth, ImageTableView::k_imageHeight)); } for (int k = 0; k < m_calculation->numberOfParameters(); k++) { diff --git a/apps/probability/calculation_controller.h b/apps/probability/calculation_controller.h index a038ff393..377dcea1a 100644 --- a/apps/probability/calculation_controller.h +++ b/apps/probability/calculation_controller.h @@ -38,7 +38,6 @@ private: constexpr static int k_maxNumberOfEditableFields = 3; private: constexpr static KDCoordinate k_textFieldWidth = 50; - constexpr static KDCoordinate k_charWidth = 7; constexpr static KDCoordinate k_textMargin = 5; int numberOfSubviews() const override; View * subviewAtIndex(int index) override; diff --git a/apps/probability/cell.cpp b/apps/probability/cell.cpp index a9a4116b1..44d7ae3c6 100644 --- a/apps/probability/cell.cpp +++ b/apps/probability/cell.cpp @@ -5,7 +5,7 @@ namespace Probability { Cell::Cell() : TableViewCell(), - m_labelView(PointerTextView(nullptr, 0, 0.5, KDColorBlack, Palette::CellBackgroundColor)) + m_labelView(PointerTextView(KDText::FontSize::Large, nullptr, 0, 0.5, KDColorBlack, Palette::CellBackgroundColor)) { } diff --git a/apps/probability/parameters_controller.cpp b/apps/probability/parameters_controller.cpp index 9bf8476a4..c9c7af318 100644 --- a/apps/probability/parameters_controller.cpp +++ b/apps/probability/parameters_controller.cpp @@ -16,9 +16,9 @@ ParametersController::ContentView::ContentView(Responder * parentResponder, Sele StackViewController * stack = parameterController->stackController(); stack->updateTitle(); stack->push(calculationController); - }, parentResponder))), - m_firstParameterDefinition(PointerTextView(nullptr, 0.5f, 0.5f, KDColorBlack, Palette::BackgroundColor)), - m_secondParameterDefinition(PointerTextView(nullptr, 0.5f, 0.5f, KDColorBlack, Palette::BackgroundColor)), + }, parentResponder), KDText::FontSize::Large)), + m_firstParameterDefinition(PointerTextView(KDText::FontSize::Small, nullptr, 0.5f, 0.5f, KDColorBlack, Palette::BackgroundColor)), + m_secondParameterDefinition(PointerTextView(KDText::FontSize::Small, nullptr, 0.5f, 0.5f, KDColorBlack, Palette::BackgroundColor)), m_selectableTableView(selectableTableView) { } diff --git a/apps/regression/banner_view.cpp b/apps/regression/banner_view.cpp index b3ee8ba87..17725701a 100644 --- a/apps/regression/banner_view.cpp +++ b/apps/regression/banner_view.cpp @@ -3,11 +3,11 @@ namespace Regression { BannerView::BannerView() : - m_regressionTypeView(nullptr, 0.5f, 0.5f), - m_slopeView(0.5f, 0.5f), - m_yInterceptView(0.5f, 0.5f), - m_xView(0.5f, 0.5f), - m_yView(0.5f, 0.5f) + m_regressionTypeView(KDText::FontSize::Small, nullptr, 0.5f, 0.5f), + m_slopeView(KDText::FontSize::Small, 0.5f, 0.5f), + m_yInterceptView(KDText::FontSize::Small, 0.5f, 0.5f), + m_xView(KDText::FontSize::Small, 0.5f, 0.5f), + m_yView(KDText::FontSize::Small, 0.5f, 0.5f) { } diff --git a/apps/regression/calculation_controller.cpp b/apps/regression/calculation_controller.cpp index 576eae009..c8287fb44 100644 --- a/apps/regression/calculation_controller.cpp +++ b/apps/regression/calculation_controller.cpp @@ -7,10 +7,13 @@ namespace Regression { CalculationController::CalculationController(Responder * parentResponder, Store * store) : ViewController(parentResponder), + m_titleCells{EvenOddPointerTextCell(KDText::FontSize::Small), EvenOddPointerTextCell(KDText::FontSize::Small), EvenOddPointerTextCell(KDText::FontSize::Small), EvenOddPointerTextCell(KDText::FontSize::Small), EvenOddPointerTextCell(KDText::FontSize::Small), + EvenOddPointerTextCell(KDText::FontSize::Small), EvenOddPointerTextCell(KDText::FontSize::Small), EvenOddPointerTextCell(KDText::FontSize::Small), EvenOddPointerTextCell(KDText::FontSize::Small), EvenOddPointerTextCell(KDText::FontSize::Small)}, + m_columnTitleCell(EvenOddDoubleBufferTextCell(&m_selectableTableView)), + m_calculationCells{EvenOddBufferTextCell(KDText::FontSize::Small), EvenOddBufferTextCell(KDText::FontSize::Small), EvenOddBufferTextCell(KDText::FontSize::Small), EvenOddBufferTextCell(KDText::FontSize::Small), EvenOddBufferTextCell(KDText::FontSize::Small)}, m_selectableTableView(SelectableTableView(this, this, Metric::TopMargin, Metric::RightMargin, Metric::BottomMargin, Metric::LeftMargin, this)), m_store(store) { - m_columnTitleCell.setParentResponder(&m_selectableTableView); for (int k = 0; k < k_maxNumberOfDisplayableRows/2; k++) { m_calculationCells[k].setTextColor(Palette::DesactiveTextColor); m_doubleCalculationCells[k].setTextColor(Palette::DesactiveTextColor); diff --git a/apps/regression/even_odd_double_buffer_text_cell.cpp b/apps/regression/even_odd_double_buffer_text_cell.cpp index 8564c1129..5eafc1551 100644 --- a/apps/regression/even_odd_double_buffer_text_cell.cpp +++ b/apps/regression/even_odd_double_buffer_text_cell.cpp @@ -5,8 +5,8 @@ EvenOddDoubleBufferTextCell::EvenOddDoubleBufferTextCell(Responder * parentRespo EvenOddCell(), Responder(parentResponder), m_firstTextSelected(true), - m_firstBufferTextView(EvenOddBufferTextCell()), - m_secondBufferTextView(EvenOddBufferTextCell()) + m_firstBufferTextView(EvenOddBufferTextCell(KDText::FontSize::Small)), + m_secondBufferTextView(EvenOddBufferTextCell(KDText::FontSize::Small)) { } diff --git a/apps/statistics/box_banner_view.cpp b/apps/statistics/box_banner_view.cpp index 1e5a3a0f6..0f2fc1cd5 100644 --- a/apps/statistics/box_banner_view.cpp +++ b/apps/statistics/box_banner_view.cpp @@ -3,8 +3,8 @@ namespace Statistics { BoxBannerView::BoxBannerView() : - m_calculationName(nullptr, 0.0f, 0.5f), - m_calculationValue(1.0f, 0.5f) + m_calculationName(KDText::FontSize::Small, nullptr, 0.0f, 0.5f), + m_calculationValue(KDText::FontSize::Small, 1.0f, 0.5f) { } diff --git a/apps/statistics/calculation_controller.cpp b/apps/statistics/calculation_controller.cpp index 3bfb3aa9c..b9fe7fe58 100644 --- a/apps/statistics/calculation_controller.cpp +++ b/apps/statistics/calculation_controller.cpp @@ -7,6 +7,10 @@ namespace Statistics { CalculationController::CalculationController(Responder * parentResponder, Store * store) : ViewController(parentResponder), + m_titleCells{EvenOddPointerTextCell(KDText::FontSize::Small), EvenOddPointerTextCell(KDText::FontSize::Small), EvenOddPointerTextCell(KDText::FontSize::Small), EvenOddPointerTextCell(KDText::FontSize::Small), EvenOddPointerTextCell(KDText::FontSize::Small), + EvenOddPointerTextCell(KDText::FontSize::Small), EvenOddPointerTextCell(KDText::FontSize::Small), EvenOddPointerTextCell(KDText::FontSize::Small), EvenOddPointerTextCell(KDText::FontSize::Small), EvenOddPointerTextCell(KDText::FontSize::Small)}, + m_calculationCells{EvenOddBufferTextCell(KDText::FontSize::Small), EvenOddBufferTextCell(KDText::FontSize::Small), EvenOddBufferTextCell(KDText::FontSize::Small), EvenOddBufferTextCell(KDText::FontSize::Small), EvenOddBufferTextCell(KDText::FontSize::Small), + EvenOddBufferTextCell(KDText::FontSize::Small), EvenOddBufferTextCell(KDText::FontSize::Small), EvenOddBufferTextCell(KDText::FontSize::Small), EvenOddBufferTextCell(KDText::FontSize::Small), EvenOddBufferTextCell(KDText::FontSize::Small)}, m_selectableTableView(SelectableTableView(this, this, Metric::TopMargin, Metric::RightMargin, Metric::BottomMargin, Metric::LeftMargin)), m_store(store) { diff --git a/apps/statistics/histogram_banner_view.cpp b/apps/statistics/histogram_banner_view.cpp index 787d782b2..f5dcc54f7 100644 --- a/apps/statistics/histogram_banner_view.cpp +++ b/apps/statistics/histogram_banner_view.cpp @@ -6,9 +6,9 @@ namespace Statistics { HistogramBannerView::HistogramBannerView() : - m_intervalView(0.5f, 0.5f), - m_sizeView(0.5f, 0.5f), - m_frequencyView(0.5f, 0.5f) + m_intervalView(KDText::FontSize::Small, 0.5f, 0.5f), + m_sizeView(KDText::FontSize::Small, 0.5f, 0.5f), + m_frequencyView(KDText::FontSize::Small, 0.5f, 0.5f) { } diff --git a/apps/statistics/histogram_controller.cpp b/apps/statistics/histogram_controller.cpp index b9bbf60d3..da8d2ddaa 100644 --- a/apps/statistics/histogram_controller.cpp +++ b/apps/statistics/histogram_controller.cpp @@ -10,11 +10,11 @@ HistogramController::HistogramController(Responder * parentResponder, HeaderView HeaderViewDelegate(headerViewController), m_bannerView(HistogramBannerView()), m_view(HistogramView(store, &m_bannerView)), - m_settingButton(Button(this, "Reglages de l'histogramme",Invocation([](void * context, void * sender) { + m_settingButton(Button(this, "Reglages de l'histogramme", Invocation([](void * context, void * sender) { HistogramController * histogramController = (HistogramController *) context; StackViewController * stack = ((StackViewController *)histogramController->stackController()); stack->push(histogramController->histogramParameterController()); - }, this))), + }, this), KDText::FontSize::Small)), m_store(store), m_cursor(CurveViewCursor()), m_histogramParameterController(nullptr, store) diff --git a/apps/store_controller.cpp b/apps/store_controller.cpp index 6a411fcad..1bb3b02a6 100644 --- a/apps/store_controller.cpp +++ b/apps/store_controller.cpp @@ -5,10 +5,11 @@ StoreController::StoreController(Responder * parentResponder, FloatPairStore * store) : EditableCellTableViewController(parentResponder, Metric::TopMargin, Metric::RightMargin, Metric::BottomMargin, Metric::LeftMargin), - m_editableCells{EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), - EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), - EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), - EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer)}, + m_editableCells{EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Large), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Large), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Large), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Large), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Large), + EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Large), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Large), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Large), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Large), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Large), + EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Large), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Large), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Large), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Large), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Large), + EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Large), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Large), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Large), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Large), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer, KDText::FontSize::Large)}, + m_titleCells{EvenOddPointerTextCell(KDText::FontSize::Large), EvenOddPointerTextCell(KDText::FontSize::Large)}, m_store(store), m_storeParameterController(this, store) { diff --git a/apps/toolbox_leaf_cell.cpp b/apps/toolbox_leaf_cell.cpp index 8d0a069b3..13708f428 100644 --- a/apps/toolbox_leaf_cell.cpp +++ b/apps/toolbox_leaf_cell.cpp @@ -3,8 +3,8 @@ ToolboxLeafCell::ToolboxLeafCell() : TableViewCell(), - m_labelView(PointerTextView(nullptr, 0, 0.5, KDColorBlack, Palette::CellBackgroundColor)), - m_subtitleView(PointerTextView(nullptr, 0, 0.5, Palette::DesactiveTextColor, Palette::CellBackgroundColor)) + m_labelView(PointerTextView(KDText::FontSize::Small, nullptr, 0, 0.5, KDColorBlack, Palette::CellBackgroundColor)), + m_subtitleView(PointerTextView(KDText::FontSize::Small, nullptr, 0, 0.5, Palette::DesactiveTextColor, Palette::CellBackgroundColor)) { } diff --git a/apps/variable_box_leaf_cell.cpp b/apps/variable_box_leaf_cell.cpp index d1907735e..380ae0189 100644 --- a/apps/variable_box_leaf_cell.cpp +++ b/apps/variable_box_leaf_cell.cpp @@ -3,8 +3,8 @@ VariableBoxLeafCell::VariableBoxLeafCell() : TableViewCell(), - m_labelView(BufferTextView(0, 0.5, KDColorBlack, Palette::CellBackgroundColor)), - m_subtitleView(BufferTextView(0, 0.5, Palette::DesactiveTextColor, Palette::CellBackgroundColor)), + m_labelView(BufferTextView(KDText::FontSize::Small, 0, 0.5, KDColorBlack, Palette::CellBackgroundColor)), + m_subtitleView(BufferTextView(KDText::FontSize::Small, 0, 0.5, Palette::DesactiveTextColor, Palette::CellBackgroundColor)), m_displayExpression(false) { } diff --git a/apps/zoom_parameter_controller.cpp b/apps/zoom_parameter_controller.cpp index 06613f953..b595203d2 100644 --- a/apps/zoom_parameter_controller.cpp +++ b/apps/zoom_parameter_controller.cpp @@ -90,20 +90,14 @@ CurveView * ZoomParameterController::ContentView::curveView() { /* Legend View */ -ZoomParameterController::ContentView::LegendView::LegendView() +ZoomParameterController::ContentView::LegendView::LegendView() : + m_legends{PointerTextView(KDText::FontSize::Small, "ZOOM+", 0.0f, 0.5f, KDColorBlack, k_legendBackgroundColor), + PointerTextView(KDText::FontSize::Small, "HAUT", 0.0f, 0.5f, KDColorBlack, k_legendBackgroundColor), + PointerTextView(KDText::FontSize::Small, "GAUCHE", 0.0f, 0.5f, KDColorBlack, k_legendBackgroundColor), + PointerTextView(KDText::FontSize::Small, "ZOOM-", 1.0f, 0.5f, KDColorBlack, k_legendBackgroundColor), + PointerTextView(KDText::FontSize::Small, "BAS", 1.0f, 0.5f, KDColorBlack, k_legendBackgroundColor), + PointerTextView(KDText::FontSize::Small, "DROITE", 1.0f, 0.5f, KDColorBlack, k_legendBackgroundColor)} { - m_legends[0].setText("ZOOM+"); - m_legends[1].setText("HAUT"); - m_legends[2].setText("GAUCHE"); - m_legends[3].setText("ZOOM-"); - m_legends[4].setText("BAS"); - m_legends[5].setText("DROITE"); - for (int row = 0; row < 3; row++) { - m_legends[row].setAlignment(0.0f, 0.5f); - m_legends[3+row].setAlignment(1.0f, 0.5f); - m_legends[row].setBackgroundColor(k_legendBackgroundColor); - m_legends[3+row].setBackgroundColor(k_legendBackgroundColor); - } } void ZoomParameterController::ContentView::LegendView::drawRect(KDContext * ctx, KDRect rect) const { diff --git a/escher/include/escher/buffer_text_view.h b/escher/include/escher/buffer_text_view.h index 0c095c956..aaee0bb7e 100644 --- a/escher/include/escher/buffer_text_view.h +++ b/escher/include/escher/buffer_text_view.h @@ -5,7 +5,7 @@ class BufferTextView : public TextView { public: - BufferTextView(float horizontalAlignment = 0.5f, float verticalAlignment = 0.5f, + BufferTextView(KDText::FontSize size, float horizontalAlignment = 0.5f, float verticalAlignment = 0.5f, KDColor textColor = KDColorBlack, KDColor backgroundColor = KDColorWhite); void setText(const char * text) override; const char * text() const override; diff --git a/escher/include/escher/button.h b/escher/include/escher/button.h index 223dda744..8caa6864d 100644 --- a/escher/include/escher/button.h +++ b/escher/include/escher/button.h @@ -8,7 +8,7 @@ class Button : public View, public Responder { public: - Button(Responder * parentResponder, const char * textBody, Invocation invocation); + Button(Responder * parentResponder, const char * textBody, Invocation invocation, KDText::FontSize size); void drawRect(KDContext * ctx, KDRect rect) const override; bool handleEvent(Ion::Events::Event event) override; void setBackgroundColor(KDColor backgroundColor); diff --git a/escher/include/escher/editable_text_cell.h b/escher/include/escher/editable_text_cell.h index 6550f3944..31b0e9e39 100644 --- a/escher/include/escher/editable_text_cell.h +++ b/escher/include/escher/editable_text_cell.h @@ -8,7 +8,7 @@ class EditableTextCell : public TableViewCell, public Responder { public: - EditableTextCell(Responder * parentResponder, TextFieldDelegate * delegate, char * draftTextBuffer, + EditableTextCell(Responder * parentResponder, TextFieldDelegate * delegate, char * draftTextBuffer, KDText::FontSize size, float horizontalAlignment = 0.0f, float verticalAlignment = 0.5f, KDColor textColor = KDColorBlack, KDColor = KDColorWhite); TextField * textField(); void reloadCell() override; diff --git a/escher/include/escher/editable_text_menu_list_cell.h b/escher/include/escher/editable_text_menu_list_cell.h index 69abecf72..fb82c646c 100644 --- a/escher/include/escher/editable_text_menu_list_cell.h +++ b/escher/include/escher/editable_text_menu_list_cell.h @@ -18,8 +18,7 @@ public: void setTextColor(KDColor color) override; constexpr static int k_bufferLength = 255; private: - constexpr static KDCoordinate k_textWidth = 7*7; - constexpr static KDCoordinate k_textHeight = 12; + constexpr static int k_maxNumberOfEditableCharacters = 14; TextField m_textField; char m_textBody[k_bufferLength]; }; diff --git a/escher/include/escher/even_odd_buffer_text_cell.h b/escher/include/escher/even_odd_buffer_text_cell.h index 88adadcef..446359404 100644 --- a/escher/include/escher/even_odd_buffer_text_cell.h +++ b/escher/include/escher/even_odd_buffer_text_cell.h @@ -6,7 +6,7 @@ class EvenOddBufferTextCell : public EvenOddCell { public: - EvenOddBufferTextCell(); + EvenOddBufferTextCell(KDText::FontSize size = KDText::FontSize::Small); void reloadCell() override; void setText(const char * textContent); void setTextColor(KDColor textColor); diff --git a/escher/include/escher/even_odd_editable_text_cell.h b/escher/include/escher/even_odd_editable_text_cell.h index e63331567..b250307af 100644 --- a/escher/include/escher/even_odd_editable_text_cell.h +++ b/escher/include/escher/even_odd_editable_text_cell.h @@ -7,7 +7,7 @@ class EvenOddEditableTextCell : public EvenOddCell, public Responder { public: - EvenOddEditableTextCell(Responder * parentResponder, TextFieldDelegate * delegate, char * draftTextBuffer); + EvenOddEditableTextCell(Responder * parentResponder, TextFieldDelegate * delegate, char * draftTextBuffer, KDText::FontSize size); EditableTextCell * editableTextCell(); void reloadCell() override; const char * text() const; diff --git a/escher/include/escher/even_odd_pointer_text_cell.h b/escher/include/escher/even_odd_pointer_text_cell.h index 040bd5daf..58f2e1bc0 100644 --- a/escher/include/escher/even_odd_pointer_text_cell.h +++ b/escher/include/escher/even_odd_pointer_text_cell.h @@ -6,7 +6,7 @@ class EvenOddPointerTextCell : public EvenOddCell { public: - EvenOddPointerTextCell(); + EvenOddPointerTextCell(KDText::FontSize size); void reloadCell() override; void setText(const char * textContent, KDColor textColor = KDColorBlack); void setAlignment(float horizontalAlignment, float verticalAlignment); diff --git a/escher/include/escher/pointer_text_view.h b/escher/include/escher/pointer_text_view.h index d3675d201..d60a0dff2 100644 --- a/escher/include/escher/pointer_text_view.h +++ b/escher/include/escher/pointer_text_view.h @@ -5,7 +5,7 @@ class PointerTextView : public TextView { public: - PointerTextView(const char * text = nullptr, float horizontalAlignment = 0.0f, float verticalAlignment = 0.0f, + PointerTextView(KDText::FontSize size, const char * text = nullptr, float horizontalAlignment = 0.0f, float verticalAlignment = 0.0f, KDColor textColor = KDColorBlack, KDColor backgroundColor = KDColorWhite); void setText(const char * text) override; protected: diff --git a/escher/include/escher/text_field.h b/escher/include/escher/text_field.h index d21c1eb2a..54d166d1d 100644 --- a/escher/include/escher/text_field.h +++ b/escher/include/escher/text_field.h @@ -8,8 +8,9 @@ class TextField : public View, public Responder { public: - TextField(Responder * parentResponder, char * textBuffer, char * draftTextBuffer, size_t textBufferSize, TextFieldDelegate * delegate = nullptr, - float horizontalAlignment = 0.0f, float verticalAlignment = 0.5f, KDColor textColor = KDColorBlack, KDColor = KDColorWhite); + TextField(Responder * parentResponder, char * textBuffer, char * draftTextBuffer, size_t textBufferSize, + KDText::FontSize size, TextFieldDelegate * delegate = nullptr, float horizontalAlignment = 0.0f, + float verticalAlignment = 0.5f, KDColor textColor = KDColorBlack, KDColor = KDColorWhite); // View void drawRect(KDContext * ctx, KDRect rect) const override; // Responder @@ -48,6 +49,7 @@ private: float m_verticalAlignment; KDColor m_textColor; KDColor m_backgroundColor; + KDText::FontSize m_fontSize; }; #endif diff --git a/escher/include/escher/text_view.h b/escher/include/escher/text_view.h index 9a5adca65..150f88384 100644 --- a/escher/include/escher/text_view.h +++ b/escher/include/escher/text_view.h @@ -9,7 +9,7 @@ public: // alignment = 0 -> align left or top // alignment = 0.5 -> align center // alignment = 1.0 -> align right or bottom - TextView(float horizontalAlignment = 0.0f, float verticalAlignment = 0.0f, + TextView(KDText::FontSize size, float horizontalAlignment = 0.0f, float verticalAlignment = 0.0f, KDColor textColor = KDColorBlack, KDColor backgroundColor = KDColorWhite); void drawRect(KDContext * ctx, KDRect rect) const override; void setBackgroundColor(KDColor backgroundColor); @@ -27,6 +27,7 @@ private: float m_verticalAlignment; KDColor m_textColor; KDColor m_backgroundColor; + KDText::FontSize m_fontSize; }; #endif diff --git a/escher/src/alternate_empty_view_controller.cpp b/escher/src/alternate_empty_view_controller.cpp index 9406406bf..4193ef075 100644 --- a/escher/src/alternate_empty_view_controller.cpp +++ b/escher/src/alternate_empty_view_controller.cpp @@ -6,7 +6,7 @@ /* ContentView */ AlternateEmptyViewController::ContentView::ContentView(ViewController * mainViewController, AlternateEmptyViewDelegate * delegate) : - m_message(PointerTextView(nullptr, 0.5f, 0.5f, KDColorBlack, Palette::BackgroundColor)), + m_message(PointerTextView(KDText::FontSize::Small, nullptr, 0.5f, 0.5f, KDColorBlack, Palette::BackgroundColor)), m_mainViewController(mainViewController), m_delegate(delegate) { diff --git a/escher/src/buffer_text_view.cpp b/escher/src/buffer_text_view.cpp index 848f6230a..d372edff2 100644 --- a/escher/src/buffer_text_view.cpp +++ b/escher/src/buffer_text_view.cpp @@ -2,9 +2,9 @@ #include #include -BufferTextView::BufferTextView(float horizontalAlignment, float verticalAlignment, +BufferTextView::BufferTextView(KDText::FontSize size, float horizontalAlignment, float verticalAlignment, KDColor textColor, KDColor backgroundColor) : - TextView(horizontalAlignment, verticalAlignment, textColor, backgroundColor) + TextView(size, horizontalAlignment, verticalAlignment, textColor, backgroundColor) { } diff --git a/escher/src/button.cpp b/escher/src/button.cpp index 1e6fa7952..54a86e63f 100644 --- a/escher/src/button.cpp +++ b/escher/src/button.cpp @@ -1,9 +1,9 @@ #include #include -Button::Button(Responder * parentResponder, const char * textBody, Invocation invocation) : +Button::Button(Responder * parentResponder, const char * textBody, Invocation invocation, KDText::FontSize size) : Responder(parentResponder), - m_pointerTextView(PointerTextView(textBody, 0.5f, 0.5f)), + m_pointerTextView(PointerTextView(size, textBody, 0.5f, 0.5f)), m_invocation(invocation), m_backgroundColor(KDColorWhite) { diff --git a/escher/src/editable_text_cell.cpp b/escher/src/editable_text_cell.cpp index b9bcdd3f7..d672b9396 100644 --- a/escher/src/editable_text_cell.cpp +++ b/escher/src/editable_text_cell.cpp @@ -4,10 +4,10 @@ #include EditableTextCell::EditableTextCell(Responder * parentResponder, TextFieldDelegate * delegate, char * draftTextBuffer, - float horizontalAlignment, float verticalAlignment, KDColor textColor, KDColor backgroundColor) : + KDText::FontSize size, float horizontalAlignment, float verticalAlignment, KDColor textColor, KDColor backgroundColor) : TableViewCell(), Responder(parentResponder), - m_textField(TextField(this, m_textBody, draftTextBuffer, 255, delegate, horizontalAlignment, verticalAlignment, textColor, backgroundColor)) + m_textField(TextField(this, m_textBody, draftTextBuffer, 255, size, delegate, horizontalAlignment, verticalAlignment, textColor, backgroundColor)) { } diff --git a/escher/src/editable_text_menu_list_cell.cpp b/escher/src/editable_text_menu_list_cell.cpp index 4b0304407..95967a194 100644 --- a/escher/src/editable_text_menu_list_cell.cpp +++ b/escher/src/editable_text_menu_list_cell.cpp @@ -4,7 +4,7 @@ EditableTextMenuListCell::EditableTextMenuListCell(Responder * parentResponder, TextFieldDelegate * textFieldDelegate, char * draftTextBuffer, char * label) : Responder(parentResponder), MenuListCell(label), - m_textField(TextField(this, m_textBody, draftTextBuffer, 255, textFieldDelegate)) + m_textField(TextField(this, m_textBody, draftTextBuffer, 255, KDText::FontSize::Large, textFieldDelegate, 1.0f, 0.5f)) { } @@ -20,7 +20,9 @@ void EditableTextMenuListCell::layoutSubviews() { MenuListCell::layoutSubviews(); KDCoordinate width = bounds().width(); KDCoordinate height = bounds().height(); - m_textField.setFrame(KDRect(width - k_textWidth - k_separatorThickness, (height - k_textHeight)/2, k_textWidth - k_separatorThickness, k_textHeight)); + KDSize charSize = KDText::stringSize(" ", KDText::FontSize::Large); + KDCoordinate textWidth = k_maxNumberOfEditableCharacters*charSize.width(); + m_textField.setFrame(KDRect(width - textWidth - k_separatorThickness, (height - charSize.height())/2, textWidth - k_separatorThickness, charSize.height())); } void EditableTextMenuListCell::didBecomeFirstResponder() { diff --git a/escher/src/even_odd_buffer_text_cell.cpp b/escher/src/even_odd_buffer_text_cell.cpp index 28611afb0..a6970c0dc 100644 --- a/escher/src/even_odd_buffer_text_cell.cpp +++ b/escher/src/even_odd_buffer_text_cell.cpp @@ -1,9 +1,9 @@ #include #include -EvenOddBufferTextCell::EvenOddBufferTextCell() : +EvenOddBufferTextCell::EvenOddBufferTextCell(KDText::FontSize size) : EvenOddCell(), - m_bufferTextView(BufferTextView(1.0f, 0.5f)) + m_bufferTextView(BufferTextView(size, 1.0f, 0.5f)) { } diff --git a/escher/src/even_odd_editable_text_cell.cpp b/escher/src/even_odd_editable_text_cell.cpp index bb7c28637..95b47d460 100644 --- a/escher/src/even_odd_editable_text_cell.cpp +++ b/escher/src/even_odd_editable_text_cell.cpp @@ -2,10 +2,10 @@ #include #include -EvenOddEditableTextCell::EvenOddEditableTextCell(Responder * parentResponder, TextFieldDelegate * delegate, char * draftTextBuffer) : +EvenOddEditableTextCell::EvenOddEditableTextCell(Responder * parentResponder, TextFieldDelegate * delegate, char * draftTextBuffer, KDText::FontSize size) : EvenOddCell(), Responder(parentResponder), - m_editableCell(this, delegate, draftTextBuffer, 1.0f, 0.5f, KDColorBlack, KDColorWhite) + m_editableCell(this, delegate, draftTextBuffer, size, 1.0f, 0.5f, KDColorBlack, KDColorWhite) { } diff --git a/escher/src/even_odd_pointer_text_cell.cpp b/escher/src/even_odd_pointer_text_cell.cpp index ec2b4f387..4e49c6778 100644 --- a/escher/src/even_odd_pointer_text_cell.cpp +++ b/escher/src/even_odd_pointer_text_cell.cpp @@ -1,9 +1,9 @@ #include #include -EvenOddPointerTextCell::EvenOddPointerTextCell() : +EvenOddPointerTextCell::EvenOddPointerTextCell(KDText::FontSize size) : EvenOddCell(), - m_pointerTextView(nullptr, 0.5f, 0.5f) + m_pointerTextView(size, nullptr, 0.5f, 0.5f) { } diff --git a/escher/src/input_view_controller.cpp b/escher/src/input_view_controller.cpp index efe57a296..d96f2c573 100644 --- a/escher/src/input_view_controller.cpp +++ b/escher/src/input_view_controller.cpp @@ -4,7 +4,7 @@ InputViewController::TextFieldController::TextFieldController(Responder * parentResponder, TextFieldDelegate * textFieldDelegate) : ViewController(parentResponder), - m_textField(parentResponder, m_textBody, m_textBody, 255, textFieldDelegate) + m_textField(parentResponder, m_textBody, m_textBody, 255, KDText::FontSize::Large, textFieldDelegate) { m_textBody[0] = 0; } diff --git a/escher/src/menu_list_cell.cpp b/escher/src/menu_list_cell.cpp index 49637d694..07c3e7ae4 100644 --- a/escher/src/menu_list_cell.cpp +++ b/escher/src/menu_list_cell.cpp @@ -5,7 +5,7 @@ constexpr KDCoordinate MenuListCell::k_separatorThickness; MenuListCell::MenuListCell(char * label) : TableViewCell(), - m_pointerTextView(PointerTextView(label, 0, 0.5, KDColorBlack, Palette::CellBackgroundColor)) + m_pointerTextView(PointerTextView(KDText::FontSize::Small, label, 0, 0.5, KDColorBlack, Palette::CellBackgroundColor)) { } diff --git a/escher/src/pointer_text_view.cpp b/escher/src/pointer_text_view.cpp index 40fc7e0b6..ba1cd61d3 100644 --- a/escher/src/pointer_text_view.cpp +++ b/escher/src/pointer_text_view.cpp @@ -1,8 +1,8 @@ #include -PointerTextView::PointerTextView(const char * text, float horizontalAlignment, float verticalAlignment, +PointerTextView::PointerTextView(KDText::FontSize size, const char * text, float horizontalAlignment, float verticalAlignment, KDColor textColor, KDColor backgroundColor) : - TextView(horizontalAlignment, verticalAlignment, textColor, backgroundColor), + TextView(size, horizontalAlignment, verticalAlignment, textColor, backgroundColor), m_textPointer(text) { } diff --git a/escher/src/stack_view.cpp b/escher/src/stack_view.cpp index deb4d9595..7b7e1c8a8 100644 --- a/escher/src/stack_view.cpp +++ b/escher/src/stack_view.cpp @@ -5,7 +5,7 @@ extern "C" { StackView::StackView() : View(), - m_textView(PointerTextView(nullptr, 0.5f, 0.5f)) + m_textView(PointerTextView(KDText::FontSize::Small, nullptr, 0.5f, 0.5f)) { } diff --git a/escher/src/tab_view_cell.cpp b/escher/src/tab_view_cell.cpp index e0aa8dac6..b5c634829 100644 --- a/escher/src/tab_view_cell.cpp +++ b/escher/src/tab_view_cell.cpp @@ -45,9 +45,9 @@ void TabViewCell::drawRect(KDContext * ctx, KDRect rect) const { ctx->fillRect(KDRect(0, 1, width, height-1), background); } // Write title - KDSize textSize = KDText::stringSize(m_name); + KDSize textSize = KDText::stringSize(m_name, KDText::FontSize::Small); KDPoint origin(0.5f*(m_frame.width() - textSize.width()),0.5f*(m_frame.height() - textSize.height())); - ctx->drawString(m_name, origin, text, background); + ctx->drawString(m_name, KDText::FontSize::Small, origin, text, background); } #if ESCHER_VIEW_LOGGING diff --git a/escher/src/text_field.cpp b/escher/src/text_field.cpp index bfc6f8520..b0f44f165 100644 --- a/escher/src/text_field.cpp +++ b/escher/src/text_field.cpp @@ -2,7 +2,7 @@ #include TextField::TextField(Responder * parentResponder, char * textBuffer, char * draftTextBuffer, - size_t textBufferSize, TextFieldDelegate * delegate, + size_t textBufferSize, KDText::FontSize size, TextFieldDelegate * delegate, float horizontalAlignment, float verticalAlignment, KDColor textColor, KDColor backgroundColor) : View(), Responder(parentResponder), @@ -16,7 +16,8 @@ TextField::TextField(Responder * parentResponder, char * textBuffer, char * draf m_horizontalAlignment(horizontalAlignment), m_verticalAlignment(verticalAlignment), m_textColor(textColor), - m_backgroundColor(backgroundColor) + m_backgroundColor(backgroundColor), + m_fontSize(size) { } @@ -29,10 +30,10 @@ const char * TextField::text() const { void TextField::drawRect(KDContext * ctx, KDRect rect) const { ctx->fillRect(rect, m_backgroundColor); - KDSize textSize = KDText::stringSize(text()); + KDSize textSize = KDText::stringSize(text(), m_fontSize); KDPoint origin(m_horizontalAlignment*(m_frame.width() - textSize.width()), m_verticalAlignment*(m_frame.height() - textSize.height())); - ctx->drawString(text(), origin, m_textColor, m_backgroundColor); + ctx->drawString(text(), m_fontSize, origin, m_textColor, m_backgroundColor); } #if ESCHER_VIEW_LOGGING @@ -58,7 +59,7 @@ void TextField::setAlignment(float horizontalAlignment, float verticalAlignment) } void TextField::reload() { - KDSize textSize = KDText::stringSize(text()); + KDSize textSize = KDText::stringSize(text(), m_fontSize); KDPoint origin(m_horizontalAlignment*(m_frame.width() - textSize.width()), m_verticalAlignment*(m_frame.height() - textSize.height())); KDRect dirtyZone(origin, textSize); @@ -168,7 +169,7 @@ void TextField::insertTextAtLocation(const char * text, int location) { } KDSize TextField::minimalSizeForOptimalDisplay() { - KDSize textSize = KDText::stringSize(m_draftTextBuffer); + KDSize textSize = KDText::stringSize(m_draftTextBuffer, m_fontSize); return KDSize(0, textSize.height()); } @@ -195,4 +196,4 @@ void TextField::reinitDraftTextBuffer() { setCursorLocation(0); m_draftTextBuffer[0] = 0; m_currentTextLength = 0; -} \ No newline at end of file +} diff --git a/escher/src/text_menu_list_cell.cpp b/escher/src/text_menu_list_cell.cpp index ea4f152a3..3e8faaeff 100644 --- a/escher/src/text_menu_list_cell.cpp +++ b/escher/src/text_menu_list_cell.cpp @@ -2,7 +2,7 @@ TextMenuListCell::TextMenuListCell(char * label) : MenuListCell(label), - m_accessoryView(BufferTextView(1.0f, 0.5f)) + m_accessoryView(BufferTextView(KDText::FontSize::Large, 1.0f, 0.5f)) { } diff --git a/escher/src/text_view.cpp b/escher/src/text_view.cpp index 47914fb3b..6b80fa8e9 100644 --- a/escher/src/text_view.cpp +++ b/escher/src/text_view.cpp @@ -1,12 +1,13 @@ #include -TextView::TextView(float horizontalAlignment, float verticalAlignment, +TextView::TextView(KDText::FontSize size, float horizontalAlignment, float verticalAlignment, KDColor textColor, KDColor backgroundColor) : View(), m_horizontalAlignment(horizontalAlignment), m_verticalAlignment(verticalAlignment), m_textColor(textColor), - m_backgroundColor(backgroundColor) + m_backgroundColor(backgroundColor), + m_fontSize(size) { } @@ -27,18 +28,18 @@ void TextView::setAlignment(float horizontalAlignment, float verticalAlignment) } KDSize TextView::minimalSizeForOptimalDisplay() { - return KDText::stringSize(text()); + return KDText::stringSize(text(), m_fontSize); } void TextView::drawRect(KDContext * ctx, KDRect rect) const { if (text() == nullptr) { return; } - KDSize textSize = KDText::stringSize(text()); + KDSize textSize = KDText::stringSize(text(), m_fontSize); KDPoint origin(m_horizontalAlignment*(m_frame.width() - textSize.width()), m_verticalAlignment*(m_frame.height() - textSize.height())); ctx->fillRect(bounds(), m_backgroundColor); - ctx->drawString(text(), origin, m_textColor, m_backgroundColor); + ctx->drawString(text(), m_fontSize, origin, m_textColor, m_backgroundColor); } #if ESCHER_VIEW_LOGGING diff --git a/escher/src/warning_controller.cpp b/escher/src/warning_controller.cpp index 10a726293..88cb3bea3 100644 --- a/escher/src/warning_controller.cpp +++ b/escher/src/warning_controller.cpp @@ -3,7 +3,7 @@ WarningController::ContentView::ContentView() : SolidColorView(KDColorBlack), - m_textView(PointerTextView("", 0.5f, 0.5f, KDColorWhite, KDColorBlack)) + m_textView(PointerTextView(KDText::FontSize::Small, "", 0.5f, 0.5f, KDColorWhite, KDColorBlack)) { } diff --git a/kandinsky/Makefile b/kandinsky/Makefile index abb9c238c..dbc0e7a02 100644 --- a/kandinsky/Makefile +++ b/kandinsky/Makefile @@ -6,12 +6,13 @@ objs += $(addprefix kandinsky/src/,\ context_pixel.o\ context_rect.o\ context_text.o\ - font.o\ framebuffer.o\ framebuffer_context.o\ ion_context.o\ + large_font.o\ point.o\ rect.o\ + small_font.o\ text.o\ ) tests += $(addprefix kandinsky/test/,\ @@ -24,30 +25,37 @@ FREETYPE_PATH := /usr/local/Cellar/freetype/2.6.3 # built w/o PNG support and simply won't output an image of the rasterization #LIBPNG_PATH := /usr/local/Cellar/libpng/1.6.21 -kandinsky/src/text.cpp: kandinsky/src/font.h -kandinsky/src/context_text.cpp: kandinsky/src/font.h +kandinsky/src/text.cpp: kandinsky/src/small_font.h kandinsky/src/large_font.h +kandinsky/src/context_text.cpp: kandinsky/src/small_font.h kandinsky/src/large_font.h -font_files = $(addprefix kandinsky/src/, font.h font.c) +small_font_files = $(addprefix kandinsky/src/, small_font.h small_font.c) +large_font_files = $(addprefix kandinsky/src/, large_font.h large_font.c) RASTERIZER_CFLAGS := -std=c99 `freetype-config --cflags` RASTERIZER_LDFLAGS := `freetype-config --libs` ifdef LIBPNG_PATH - font_files += kandinsky/src/font.png + small_font_files += kandinsky/src/small_font.png + large_font_files += kandinsky/src/large_font.png RASTERIZER_CFLAGS += -I$(LIBPNG_PATH)/include -DGENERATE_PNG=1 -L$(LIBPNG_PATH)/lib -lpng endif # Even though raster will generate both .c and .h files, we don't declare it as # such to make. If we did, "make -jN" with N>1 may call "raster" twice. -kandinsky/src/font.h: kandinsky/src/font.c -kandinsky/src/font.c: kandinsky/fonts/rasterizer - @echo "RASTER $(font_files)" - @$< kandinsky/fonts/ProggyClean.ttf 16 16 $(font_files) +kandinsky/src/small_font.h: kandinsky/src/small_font.c +kandinsky/src/small_font.c: kandinsky/fonts/rasterizer + @echo "RASTER $(small_font_files)" + @$< kandinsky/fonts/smallPixelFont.ttf 12 12 SmallFont $(small_font_files) + +kandinsky/src/large_font.h: kandinsky/src/large_font.c +kandinsky/src/large_font.c: kandinsky/fonts/rasterizer + @echo "RASTER $(large_font_files)" + @$< kandinsky/fonts/largePixelFont.ttf 16 16 LargeFont $(large_font_files) kandinsky/fonts/rasterizer: kandinsky/fonts/rasterizer.c @echo "HOSTCC $@" - @$(HOSTCC) -std=c99 $(RASTERIZER_CFLAGS) $< $(RASTERIZER_LDFLAGS) -o $@ + @$(HOSTCC) -std=c99 $(RASTERIZER_CFLAGS) $< $(RASTERIZER_LDFLAGS) -o$@ -products += $(font_files) kandinsky/fonts/rasterizer +products += $(small_font_files) $(large_font_files) kandinsky/fonts/rasterizer diff --git a/kandinsky/fonts/largePixelFont.ttf b/kandinsky/fonts/largePixelFont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..778a46dc7294fc08ea39d67914ee17fc9aed6d50 GIT binary patch literal 223324 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%0AgIm#BK$TI}|a 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

o0<@n1n=#Rgg ze7OL{e7XGcKS6)`=EFJOCsBr~ohkV1r!1JOG3scd!KX1uO@`Dgd+q7yuXpU=n~C0OkQ$0$>$r z=M7V7f$$yxhX9-aa1Ou~0Ji`NKyEI90E7VHa1h8P3V>Ju z5&%dB00ICUc#i^pu>b(ygK!}OKm&jY00#g*03raS04M;B3pMBm7aa)vyl0wezt__w z-OqcLrXefu@W_N_Bv5U>&fbkWUEXVP2JnD*9=DcW+wlHPRJ@x1r`(}MMWn)l!S zR2M+{p3UnlPf!pj3Fvb$5E6s|;Xx#zk1;@O5Dz2-NkDRt3Zw=4-xz2TGz0X&CD1Bp z1L%W$phM6J&iicV8mI=u1}}mCJ$MEDAHe?+ybk_P z;QtKt@xKD^fd3147yMtrd*J^D-Ut78@B#R*!I$8_0pEh}z<>AU3>XW30Mh*rKqUS* z_zC3m@~cQ~+oJFaR(Hz$5^sv)*|C zmH=1u= literal 0 HcmV?d00001 diff --git a/kandinsky/fonts/rasterizer.c b/kandinsky/fonts/rasterizer.c index dc73f9bad..4730f5079 100644 --- a/kandinsky/fonts/rasterizer.c +++ b/kandinsky/fonts/rasterizer.c @@ -46,7 +46,6 @@ void writeImageToPNGFile(image_t * image, char * filename); #error Grid too small. Consider increasing GRID_WIDTH or GRID_HEIGHT #endif - void drawGlyphInImage(FT_Bitmap * glyphBitmap, image_t * image, int x, int y); int main(int argc, char * argv[]) { @@ -54,19 +53,20 @@ int main(int argc, char * argv[]) { FT_Face face; image_t bitmap_image; - int expectedNumberOfArguments = 6; + int expectedNumberOfArguments = 7; #ifdef GENERATE_PNG - expectedNumberOfArguments = 7; + expectedNumberOfArguments = 8; #endif if (argc != expectedNumberOfArguments) { #ifdef GENERATE_PNG - fprintf(stderr, "Usage: %s font_file glyph_width glyph_height output_header output_implementation output_png\n", argv[0]); + fprintf(stderr, "Usage: %s font_file glyph_width glyph_height font_name output_header output_implementation output_png\n", argv[0]); #else - fprintf(stderr, "Usage: %s font_file glyph_width glyph_height output_header output_implementation\n", argv[0]); + fprintf(stderr, "Usage: %s font_file glyph_width glyph_height font_name output_header output_implementation\n", argv[0]); #endif fprintf(stderr, " font_file: Path of the font file to load\n"); fprintf(stderr, " glyph_width: Width of bitmap glyphs, in pixels\n"); fprintf(stderr, " glyph_height: Height of bitmap glyphs, in pixels\n"); + fprintf(stderr, " font_name: name of the loaded font\n"); fprintf(stderr, " output_header: Name of the generated C header file\n"); fprintf(stderr, " output_implementation: Name of the generated C source file\n"); #ifdef GENERATE_PNG @@ -78,10 +78,11 @@ int main(int argc, char * argv[]) { char * font_file = argv[1]; int requested_glyph_width = atoi(argv[2]); int requested_glyph_height = atoi(argv[3]); - char * output_header = argv[4]; - char * output_implementation = argv[5]; + char * font_name = argv[4]; + char * output_header = argv[5]; + char * output_implementation = argv[6]; #ifdef GENERATE_PNG - char * output_png = argv[6]; + char * output_png = argv[7]; #endif ENSURE(!FT_Init_FreeType(&library), "Initializing library"); @@ -115,7 +116,7 @@ int main(int argc, char * argv[]) { } } - int glyph_width = maxWidth; + int glyph_width = maxWidth-1; int glyph_height = maxAboveBaseline+maxBelowBaseline; //printf("Actual glyph size = %dx%d\n", glyph_width, glyph_height); @@ -157,16 +158,16 @@ int main(int argc, char * argv[]) { FILE * headerFile = fopen(output_header, "w"); fprintf(headerFile, "/* Auto-generated by rasterizer */\n\n"); - fprintf(headerFile, "#define BITMAP_FONT_FIRST_CHARACTER 0x%2x\n", CHARACTER_RANGE_START); - fprintf(headerFile, "#define BITMAP_FONT_LAST_CHARACTER 0x%2x\n\n", CHARACTER_RANGE_END); - fprintf(headerFile, "#define BITMAP_FONT_CHARACTER_WIDTH %d\n", glyph_width); - fprintf(headerFile, "#define BITMAP_FONT_CHARACTER_HEIGHT %d\n\n", glyph_height); - fprintf(headerFile, "extern unsigned char bitmapFont[%d][%d][%d];\n", CHARACTER_RANGE_END-CHARACTER_RANGE_START+1, glyph_height, glyph_width); + fprintf(headerFile, "#define BITMAP_%s_FIRST_CHARACTER 0x%2x\n", font_name, CHARACTER_RANGE_START); + fprintf(headerFile, "#define BITMAP_%s_LAST_CHARACTER 0x%2x\n\n", font_name, CHARACTER_RANGE_END); + fprintf(headerFile, "#define BITMAP_%s_CHARACTER_WIDTH %d\n", font_name, glyph_width); + fprintf(headerFile, "#define BITMAP_%s_CHARACTER_HEIGHT %d\n\n", font_name, glyph_height); + fprintf(headerFile, "extern unsigned char bitmap%s[%d][%d][%d];\n", font_name, CHARACTER_RANGE_END-CHARACTER_RANGE_START+1, glyph_height, glyph_width); fclose(headerFile); FILE * sourceFile = fopen(output_implementation, "w"); fprintf(sourceFile, "/* Auto-generated by rasterizer */\n\n"); - fprintf(sourceFile, "unsigned char bitmapFont[%d][%d][%d] = {\n", CHARACTER_RANGE_END-CHARACTER_RANGE_START+1, glyph_height, glyph_width); + fprintf(sourceFile, "unsigned char bitmap%s[%d][%d][%d] = {\n", font_name, CHARACTER_RANGE_END-CHARACTER_RANGE_START+1, glyph_height, glyph_width); for (unsigned char character = CHARACTER_RANGE_START; character <= CHARACTER_RANGE_END; character++) { fprintf(sourceFile, " {\n"); int characterX = ((character-CHARACTER_RANGE_START)%GRID_WIDTH * (glyph_width+grid_size)); diff --git a/kandinsky/fonts/smallPixelFont.ttf b/kandinsky/fonts/smallPixelFont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9f5671cc393869fa9472e1808cecb368f0d072c3 GIT binary patch literal 170944 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 literal 0 HcmV?d00001 diff --git a/kandinsky/include/kandinsky/context.h b/kandinsky/include/kandinsky/context.h index 805ed96d2..874ebc335 100644 --- a/kandinsky/include/kandinsky/context.h +++ b/kandinsky/include/kandinsky/context.h @@ -3,6 +3,7 @@ #include #include +#include class KDContext { public: @@ -14,10 +15,10 @@ public: KDColor getPixel(KDPoint p); // Text - void drawChar(char character, KDPoint p, KDColor textColor = KDColorBlack, KDColor backgroundColor = KDColorWhite); - void drawString(const char * text, KDPoint p, KDColor textColor = KDColorBlack, KDColor backgroundColor = KDColorWhite); - void blendChar(char character, KDPoint p, KDColor textColor = KDColorBlack); - void blendString(const char * text, KDPoint p, KDColor textColor = KDColorBlack); + void drawChar(char character, KDText::FontSize size, KDPoint p, KDColor textColor = KDColorBlack, KDColor backgroundColor = KDColorWhite); + void drawString(const char * text, KDText::FontSize size, KDPoint p, KDColor textColor = KDColorBlack, KDColor backgroundColor = KDColorWhite); + void blendChar(char character, KDText::FontSize size, KDPoint p, KDColor textColor = KDColorBlack); + void blendString(const char * text, KDText::FontSize size, KDPoint p, KDColor textColor = KDColorBlack); // Line. Not anti-aliased. void drawLine(KDPoint p1, KDPoint p2, KDColor c); diff --git a/kandinsky/include/kandinsky/text.h b/kandinsky/include/kandinsky/text.h index 69cd93b91..230ddc0d7 100644 --- a/kandinsky/include/kandinsky/text.h +++ b/kandinsky/include/kandinsky/text.h @@ -5,7 +5,11 @@ class KDText { public: - static KDSize stringSize(const char * text); + enum class FontSize { + Small, + Large + }; + static KDSize stringSize(const char * text, FontSize size); }; #endif diff --git a/kandinsky/src/context_text.cpp b/kandinsky/src/context_text.cpp index d4f8513ea..12e8819a2 100644 --- a/kandinsky/src/context_text.cpp +++ b/kandinsky/src/context_text.cpp @@ -1,50 +1,50 @@ #include -#include "font.h" +#include "small_font.h" +#include "large_font.h" -KDColor characterBuffer[BITMAP_FONT_CHARACTER_WIDTH*BITMAP_FONT_CHARACTER_HEIGHT]; +KDColor smallCharacterBuffer[BITMAP_SmallFont_CHARACTER_WIDTH*BITMAP_SmallFont_CHARACTER_HEIGHT]; +KDColor largeCharacterBuffer[BITMAP_LargeFont_CHARACTER_WIDTH*BITMAP_LargeFont_CHARACTER_HEIGHT]; -void KDContext::drawChar(char character, KDPoint p, KDColor textColor, KDColor backgroundColor) { - for (int j=0; j #include -#include "font.h" +#include "small_font.h" +#include "large_font.h" -KDSize KDText::stringSize(const char * text) { +KDSize KDText::stringSize(const char * text, FontSize size) { if (text == nullptr) { return KDSizeZero; } - return KDSize(BITMAP_FONT_CHARACTER_WIDTH*strlen(text), BITMAP_FONT_CHARACTER_HEIGHT); + if (size == FontSize::Large) { + return KDSize(BITMAP_LargeFont_CHARACTER_WIDTH*strlen(text), BITMAP_LargeFont_CHARACTER_HEIGHT); + } + return KDSize(BITMAP_SmallFont_CHARACTER_WIDTH*strlen(text), BITMAP_SmallFont_CHARACTER_HEIGHT); } diff --git a/poincare/src/layout/fraction_layout.cpp b/poincare/src/layout/fraction_layout.cpp index ca964d40c..900f59346 100644 --- a/poincare/src/layout/fraction_layout.cpp +++ b/poincare/src/layout/fraction_layout.cpp @@ -8,7 +8,7 @@ ExpressionLayout(), m_numerator_layout(numerator_layout), m_denominator_layout(d m_denominator_layout->setParent(this); m_baseline = m_numerator_layout->size().height() + k_fractionLineMargin - + KDText::stringSize(" ").height()/2; + + KDText::stringSize(" ", KDText::FontSize::Large).height()/2; } FractionLayout::~FractionLayout() { diff --git a/poincare/src/layout/matrix_layout.cpp b/poincare/src/layout/matrix_layout.cpp index 72a6de3d3..23c9a3b21 100644 --- a/poincare/src/layout/matrix_layout.cpp +++ b/poincare/src/layout/matrix_layout.cpp @@ -13,7 +13,7 @@ MatrixLayout::MatrixLayout(ExpressionLayout ** entryLayouts, int numberOfRows, i for (int i = 0; i < m_numberOfRows*m_numberOfColumns; i++) { m_entryLayouts[i]->setParent(this); } - m_baseline = height()/2 + KDText::stringSize(" ").height()/2; + m_baseline = height()/2 + KDText::stringSize(" ", KDText::FontSize::Large).height()/2; } MatrixLayout::~MatrixLayout() { diff --git a/poincare/src/layout/string_layout.cpp b/poincare/src/layout/string_layout.cpp index 6dfb687c3..86bcf4b70 100644 --- a/poincare/src/layout/string_layout.cpp +++ b/poincare/src/layout/string_layout.cpp @@ -8,7 +8,7 @@ ExpressionLayout() { memcpy(m_string, string, length); m_string[length] = 0; // Height of the font. - m_baseline = KDText::stringSize(" ").height(); + m_baseline = KDText::stringSize(" ", KDText::FontSize::Large).height(); } StringLayout::~StringLayout() { @@ -20,7 +20,7 @@ ExpressionLayout * StringLayout::child(uint16_t index) { } void StringLayout::render(KDContext * ctx, KDPoint p, KDColor expressionColor, KDColor backgroundColor) { - ctx->drawString(m_string, p, expressionColor, backgroundColor); + ctx->drawString(m_string, KDText::FontSize::Large, p, expressionColor, backgroundColor); } KDPoint StringLayout::positionOfChild(ExpressionLayout * child) { @@ -29,5 +29,5 @@ KDPoint StringLayout::positionOfChild(ExpressionLayout * child) { } KDSize StringLayout::computeSize() { - return KDText::stringSize(m_string); + return KDText::stringSize(m_string, KDText::FontSize::Large); } diff --git a/quiz/src/runner.cpp b/quiz/src/runner.cpp index 7f249d510..da0c0fce5 100644 --- a/quiz/src/runner.cpp +++ b/quiz/src/runner.cpp @@ -6,8 +6,8 @@ void print(const char * message) { static int line_y = 0; KDContext * ctx = KDIonContext::sharedContext(); - int line_height = KDText::stringSize("M").height(); - ctx->drawString(message, KDPoint(0, line_y), KDColorBlack); + int line_height = KDText::stringSize("M", KDText::FontSize::Large).height(); + ctx->drawString(message, KDText::FontSize::Large, KDPoint(0, line_y), KDColorBlack); line_y += line_height; if (line_y > Ion::Display::Height) { line_y = 0;