Numworks Epsilon  1.4.1
Graphing Calculator Operating System
message_view.cpp
Go to the documentation of this file.
1 #include "message_view.h"
2 #include <assert.h>
3 
4 MessageView::MessageView(I18n::Message * messages, KDColor * colors, uint8_t numberOfMessages) {
5  m_numberOfMessages = numberOfMessages < k_maxNumberOfMessages ? numberOfMessages : k_maxNumberOfMessages;
6  for (uint8_t i = 0; i < m_numberOfMessages; i++) {
7  m_messageTextViews[i].setFontSize(i == 0 ? KDText::FontSize::Large : KDText::FontSize::Small);
8  m_messageTextViews[i].setMessage(messages[i]);
9  m_messageTextViews[i].setAlignment(0.5f, 0.5f);
10  m_messageTextViews[i].setTextColor(colors[i]);
11  }
12 }
13 
14 void MessageView::drawRect(KDContext * ctx, KDRect rect) const {
15  ctx->fillRect(bounds(), KDColorWhite);
16 }
17 
19  if (index >= m_numberOfMessages) {
20  assert(false);
21  return nullptr;
22  }
23  return &(m_messageTextViews[index]);
24 }
25 
27  if (m_numberOfMessages == 0) {
28  return;
29  }
30  KDCoordinate width = bounds().width();
31  KDCoordinate titleHeight = m_messageTextViews[0].minimalSizeForOptimalDisplay().height();
33  m_messageTextViews[0].setFrame(KDRect(0, k_titleMargin, width, titleHeight));
34  for (uint8_t i = 1; i < m_numberOfMessages; i++) {
35  m_messageTextViews[i].setFrame(KDRect(0, k_paragraphHeight + (i-1) * textHeight, width, textHeight));
36  }
37 }
#define assert(e)
Definition: assert.h:9
void setFrame(KDRect frame)
Definition: view.cpp:125
int16_t KDCoordinate
Definition: coordinate.h:6
unsigned char uint8_t
Definition: stdint.h:4
View * subviewAtIndex(int index) override
constexpr KDColor KDColorWhite
Definition: color.h:42
void setMessage(I18n::Message message)
KDSize minimalSizeForOptimalDisplay() const override
MessageView(I18n::Message *messages, KDColor *colors, uint8_t numberOfMessages)
Definition: message_view.cpp:4
Definition: rect.h:26
void fillRect(KDRect rect, KDColor color)
Definition: context_rect.cpp:8
Definition: color.h:6
Definition: view.h:23
void layoutSubviews() override
void setAlignment(float horizontalAlignment, float verticalAlignment)
Definition: text_view.cpp:24
void drawRect(KDContext *ctx, KDRect rect) const override
KDCoordinate width() const
Definition: rect.h:39
void setTextColor(KDColor textColor)
Definition: text_view.cpp:19
static constexpr KDSize charSize(FontSize size=FontSize::Large)
Definition: text.h:16
void setFontSize(KDText::FontSize fontSize)
Definition: text_view.cpp:30
KDRect bounds() const
Definition: view.cpp:157
constexpr KDCoordinate height() const
Definition: size.h:11