Files
bobbycar-boardcomputer-firm…/main/displays/xydebugdisplay.cpp
T

78 lines
1.7 KiB
C++

#include "xydebugdisplay.h"
// 3rdparty lib includes
#include <fmt/core.h>
#include <screenmanager.h>
#include <tftinstance.h>
// local includes
#include "bobbybuttons.h"
XYDebugDisplay::XYDebugDisplay() : m_labelCoordinates{5, 5} {}
void XYDebugDisplay::initScreen()
{
Base::initScreen();
m_labelCoordinates.start();
}
void XYDebugDisplay::redraw()
{
using namespace espgui;
Base::redraw();
m_labelCoordinates.redraw(fmt::format("X: {}, Y: {}", m_current_cursor.x, m_current_cursor.y));
if (m_current_cursor.x != m_last_cursor.x || m_current_cursor.y != m_last_cursor.y)
{
tft.fillCircle(m_last_cursor.x, m_last_cursor.y, 2, TFT_BLACK);
tft.fillCircle(m_current_cursor.x, m_current_cursor.y, 2, TFT_WHITE);
m_last_cursor = m_current_cursor;
}
}
void XYDebugDisplay::buttonPressed(espgui::Button button)
{
switch (button)
{
using espgui::Button;
case Button::Left:
case Button::Right:
case Button::Up:
case Button::Down:
espgui::popScreen();
break;
default:;
}
switch (BobbyButton(button))
{
case BobbyButton::Left2:
if (m_current_cursor.x > 0)
{
--m_current_cursor.x;
}
break;
case BobbyButton::Right2:
if (m_current_cursor.x < espgui::tft.width() - 1)
{
++m_current_cursor.x;
}
break;
case BobbyButton::Up2:
if (m_current_cursor.y > 0)
{
--m_current_cursor.y;
}
break;
case BobbyButton::Down2:
if (m_current_cursor.y < espgui::tft.height() - 1)
{
++m_current_cursor.y;
}
break;
default:;
}
}