Numworks Epsilon  1.4.1
Graphing Calculator Operating System
graph_view.cpp
Go to the documentation of this file.
1 #include "graph_view.h"
2 #include <assert.h>
3 
4 using namespace Shared;
5 
6 namespace Regression {
7 
8 GraphView::GraphView(Store * store, CurveViewCursor * cursor, BannerView * bannerView, View * cursorView) :
9  CurveView(store, cursor, bannerView, cursorView),
10  m_store(store),
11  m_xLabels{},
12  m_yLabels{}
13 {
14 }
15 
16 void GraphView::drawRect(KDContext * ctx, KDRect rect) const {
17  ctx->fillRect(rect, KDColorWhite);
18  drawGrid(ctx, rect);
19  drawAxes(ctx, rect, Axis::Horizontal);
20  drawAxes(ctx, rect, Axis::Vertical);
21  drawLabels(ctx, rect, Axis::Horizontal, true);
22  drawLabels(ctx, rect, Axis::Vertical, true);
23  float regressionParameters[2] = {(float)m_store->slope(), (float)m_store->yIntercept()};
24  drawCurve(ctx, rect, [](float abscissa, void * model, void * context) {
25  float * params = (float *)model;
26  return params[0]*abscissa+params[1];
27  },
28  regressionParameters, nullptr, Palette::YellowDark);
29  for (int index = 0; index < m_store->numberOfPairs(); index++) {
30  drawDot(ctx, rect, m_store->get(0,index), m_store->get(1,index), Palette::Red);
31  }
32  drawDot(ctx, rect, m_store->meanOfColumn(0), m_store->meanOfColumn(1), Palette::Palette::YellowDark, true);
33  drawDot(ctx, rect, m_store->meanOfColumn(0), m_store->meanOfColumn(1), KDColorWhite);
34 }
35 
36 char * GraphView::label(Axis axis, int index) const {
37  if (axis == Axis::Vertical) {
38  return (char *)m_yLabels[index];
39  }
40  return (char *)m_xLabels[index];
41 }
42 
43 }
Poincare::Context * context() const
static constexpr KDColor YellowDark
Definition: palette.h:8
void drawRect(KDContext *ctx, KDRect rect) const override
Definition: graph_view.cpp:24
const SettingsMessageTree model
void drawGrid(KDContext *ctx, KDRect rect) const
Definition: curve_view.cpp:277
void drawAxes(KDContext *ctx, KDRect rect, Axis axis) const
Definition: curve_view.cpp:282
void drawCurve(KDContext *ctx, KDRect rect, EvaluateModelWithParameter evaluation, void *model, void *context, KDColor color, bool colorUnderCurve=false, float colorLowerBound=0.0f, float colorUpperBound=0.0f, bool continuously=false) const
Definition: curve_view.cpp:339
constexpr KDColor KDColorWhite
Definition: color.h:42
void drawLabels(KDContext *ctx, KDRect rect, Axis axis, bool shiftOrigin) const
Definition: curve_view.cpp:146
Definition: rect.h:26
void fillRect(KDRect rect, KDColor color)
Definition: context_rect.cpp:8
Definition: view.h:23
static constexpr KDColor Red
Definition: palette.h:23
void drawDot(KDContext *ctx, KDRect rect, float x, float y, KDColor color, bool oversize=false) const
Definition: curve_view.cpp:241