Subversion Repositories libOLED

Rev

Rev 16 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 16 Rev 17
Line 11... Line 11...
11
#include "libOLED/displayDial.H"
11
#include "libOLED/displayDial.H"
12
#include <string.h>
12
#include <string.h>
13
 
13
 
14
static ap_math math;
14
static ap_math math;
15
 
15
 
-
 
16
displayDial_t::displayDial_t(display_t &display,
-
 
17
                             uint8_t x, uint8_t y,
-
 
18
                             uint8_t siz,
-
 
19
                             int16_t angle_low,
16
displayDial_t::displayDial_t(display_t &display, uint8_t x, uint8_t y, uint8_t siz, int16_t angle_low, int16_t angle_high) : m_display(display),
20
                             int16_t angle_high) : m_display(display),
-
 
21
                                                   m_xo(x), m_yo(y), m_siz(siz),
-
 
22
                                                   m_angleLow(angle_low),
17
                                                                                                                             m_xo(x), m_yo(y), m_siz(siz), m_angleLow(angle_low), m_angleRange(angle_high - angle_low), m_unitStr(nullptr)
23
                                                   m_angleRange(angle_high - angle_low),
-
 
24
                                                   m_unitStr(nullptr),
-
 
25
                                                   m_titleStr(nullptr)
18
{
26
{
19
}
27
}
20
 
28
 
-
 
29
displayDial_t::displayDial_t(display_t &display,
-
 
30
                             uint8_t x, uint8_t y,
-
 
31
                             uint8_t siz,
21
displayDial_t::displayDial_t(display_t &display, uint8_t x, uint8_t y, uint8_t siz, uint16_t angle_) : m_display(display), m_xo(x), m_yo(y), m_siz(siz), m_angleLow(-angle_), m_angleRange(2 * angle_), m_unitStr(nullptr)
32
                             uint16_t angle_) : m_display(display),
-
 
33
                                                m_xo(x), m_yo(y),
-
 
34
                                                m_siz(siz),
-
 
35
                                                m_angleLow(-angle_),
-
 
36
                                                m_angleRange(2 * angle_),
-
 
37
                                                m_unitStr(nullptr),
-
 
38
                                                m_titleStr(nullptr)
22
{
39
{
23
}
40
}
24
 
41
 
25
/* position is integer from 0 to SINE_STEPS */
42
/* position is integer from 0 to SINE_STEPS */
26
void displayDial_t::draw_needle(int16_t position)
43
void displayDial_t::draw_needle(int16_t position)
Line 101... Line 118...
101
 
118
 
102
void displayDial_t::draw_value_items(int val, int dpCode, int width, int x, int y)
119
void displayDial_t::draw_value_items(int val, int dpCode, int width, int x, int y)
103
{
120
{
104
 
121
 
105
  m_display.gotoxy(x, y);
122
  m_display.gotoxy(x, y);
106
  m_display.fontDigits(large_font, width, dpCode, val, WHITE);
123
  m_display.fontDigits(medium_font, width, dpCode, val, WHITE);
107
  m_display.gotoxy(x, y+16);
124
  m_display.gotoxy(x, y + 16);
108
  if (m_unitStr)
125
  if (m_unitStr)
109
  {
126
  {
110
    int l = strlen(m_unitStr);
127
    int l = strlen(m_unitStr);
111
    if (l > 4)
128
    if (l > 4)
112
      l = 4;
129
      l = 4;
Line 126... Line 143...
126
 
143
 
127
void displayFullDial_t::draw_limits()
144
void displayFullDial_t::draw_limits()
128
{
145
{
129
  m_display.fontSigDigits(small_font, 0, 56, 0, 10, m_low, WHITE);
146
  m_display.fontSigDigits(small_font, 0, 56, 0, 10, m_low, WHITE);
130
  m_display.fontSigDigits(small_font, 120, 56, 1, 10, m_high, WHITE);
147
  m_display.fontSigDigits(small_font, 120, 56, 1, 10, m_high, WHITE);
-
 
148
 
-
 
149
  if (m_titleStr)
-
 
150
  {
-
 
151
    int i = strlen(m_titleStr);
-
 
152
    m_display.gotoxy(64 - i * 5, 48);
-
 
153
    m_display.printString(large_font, m_titleStr, i, WHITE);
-
 
154
  }
131
}
155
}
132
 
156
 
133
void displayFullDial_t ::draw_value(int val, int dp)
157
void displayFullDial_t ::draw_value(int val, int dp, int digits)
134
{
158
{
135
  draw_value_items(val, dp, 4, 30, 32);
159
  draw_value_items(val, dp, digits, 30, 32);
136
}
160
}
137
 
161
 
138
////////////////////////////////////////////////////////////////////////////////
162
////////////////////////////////////////////////////////////////////////////////
139
displayLeftQuadrantDial_t::displayLeftQuadrantDial_t(display_t &display) : displayDial_t(display, 0, 60, 60, 90, 0){};
163
displayLeftQuadrantDial_t::displayLeftQuadrantDial_t(display_t &display) : displayDial_t(display, 0, 60, 60, 90, 0){};
140
 
164
 
141
void displayLeftQuadrantDial_t::draw_limits()
165
void displayLeftQuadrantDial_t::draw_limits()
142
{
166
{
143
  m_display.fontSigDigits(small_font, 0, 10, false, display_t::NO_DECIMAL, m_high, WHITE);
167
  m_display.fontSigDigits(small_font, 0, 10, false, display_t::NO_DECIMAL, m_high, WHITE);
144
  m_display.fontSigDigits(small_font, 56, 56, true, display_t::NO_DECIMAL, m_low, WHITE);
168
  m_display.fontSigDigits(small_font, 56, 56, true, display_t::NO_DECIMAL, m_low, WHITE);
-
 
169
 
-
 
170
  if (m_titleStr)
-
 
171
  {
-
 
172
    int i = strlen(m_titleStr);
-
 
173
    m_display.gotoxy(64 - i * 5, 0);
-
 
174
    m_display.printString(large_font, m_titleStr, i, WHITE);
-
 
175
  }
145
}
176
}
146
 
177
 
147
void displayLeftQuadrantDial_t ::draw_value(int val, int dp)
178
void displayLeftQuadrantDial_t ::draw_value(int val, int dp, int digits)
148
{
179
{
149
  draw_value_items(val, dp, 3, 0, 32);
180
  draw_value_items(val, dp, digits, 0, 32);
150
}
181
}
151
 
182
 
152
////////////////////////////////////////////////////////////////////////////////
183
////////////////////////////////////////////////////////////////////////////////
153
displayRightQuadrantDial_t::displayRightQuadrantDial_t(display_t &display) : displayDial_t(display, 127, 60, 60, -90, 0){};
184
displayRightQuadrantDial_t::displayRightQuadrantDial_t(display_t &display) : displayDial_t(display, 127, 60, 60, -90, 0){};
154
 
185
 
Line 156... Line 187...
156
{
187
{
157
  m_display.fontSigDigits(small_font, 128, 10, true, display_t::NO_DECIMAL, m_high, WHITE);
188
  m_display.fontSigDigits(small_font, 128, 10, true, display_t::NO_DECIMAL, m_high, WHITE);
158
  m_display.fontSigDigits(small_font, 128 - 56, 56, false, display_t::NO_DECIMAL, m_low, WHITE);
189
  m_display.fontSigDigits(small_font, 128 - 56, 56, false, display_t::NO_DECIMAL, m_low, WHITE);
159
}
190
}
160
 
191
 
161
void displayRightQuadrantDial_t::draw_value(int val, int dp)
192
void displayRightQuadrantDial_t::draw_value(int val, int dp, int digits)
162
{
193
{
163
  draw_value_items(val, dp, 3, 90, 32);
194
  draw_value_items(val, dp, digits, 90, 32);
164
}
195
}