From cc51c10dfaee9be88587a5b289afbdece7acf2d3 Mon Sep 17 00:00:00 2001 From: Rescue Group Date: Thu, 27 Jun 2013 12:41:49 +0200 Subject: [PATCH] MM: Added a very ugly joint render --- .../crosbot_ui/renders/robot/robotwidget.hpp | 17 +++++++- crosbot_ui/src/panels/robot.cpp | 4 ++ crosbot_ui/src/renders/robot/robotwidget.cpp | 43 +++++++++++++++++++ 3 files changed, 62 insertions(+), 2 deletions(-) diff --git a/crosbot_ui/include/crosbot_ui/renders/robot/robotwidget.hpp b/crosbot_ui/include/crosbot_ui/renders/robot/robotwidget.hpp index 24b9c0b..fadafb3 100644 --- a/crosbot_ui/include/crosbot_ui/renders/robot/robotwidget.hpp +++ b/crosbot_ui/include/crosbot_ui/renders/robot/robotwidget.hpp @@ -10,6 +10,7 @@ #include #include +#include #include #include @@ -23,8 +24,6 @@ namespace gui { #define PARAM_ROTATE "rotate" #define PARAM_BOUNDS "bounds" - - class RobotPanel; class RobotRender { public: @@ -56,6 +55,20 @@ protected: float rotate; }; +#define JUNK_RENDER +#ifdef JUNK_RENDER + +class JointRender : public RobotRender { +public: + Colour4f colour; + + JointRender(RobotPanel& panel, ConfigElementPtr config); + virtual void start(); + virtual void stop(); + virtual void render(); +}; + +#endif class RobotWidget: public QGLWidget { Q_OBJECT; diff --git a/crosbot_ui/src/panels/robot.cpp b/crosbot_ui/src/panels/robot.cpp index 8dcefbd..92fa69d 100644 --- a/crosbot_ui/src/panels/robot.cpp +++ b/crosbot_ui/src/panels/robot.cpp @@ -101,6 +101,10 @@ RobotRender *RobotPanel::getRender(ConfigElementPtr config, RobotPanel& panel) { rval = new ImageRender(panel, config); } else if (strcasecmp(config->name.c_str(), RENDER_JOYSTICK) == 0) { rval = new JoystickRender(panel, config); +#ifdef JUNK_RENDER + } else if (strcasecmp(config->name.c_str(), "junk") == 0) { + rval = new JointRender(panel, config); +#endif } } diff --git a/crosbot_ui/src/renders/robot/robotwidget.cpp b/crosbot_ui/src/renders/robot/robotwidget.cpp index 7bc7492..0edc112 100644 --- a/crosbot_ui/src/renders/robot/robotwidget.cpp +++ b/crosbot_ui/src/renders/robot/robotwidget.cpp @@ -565,6 +565,49 @@ void RobotWidget::addInputListener(ConfigElementPtr cfg) { } } +#ifdef JUNK_RENDER + +JointRender::JointRender(RobotPanel& panel, ConfigElementPtr config) : + RobotRender(panel, config, QRectF(0, 0, 1, 0.1)), + colour(1.0, 0, 0, 0.5) +{} + +void JointRender::start() { + joints.connect(); +} + +void JointRender::stop() {} + +#define MIN(X, Y) (((X) < (Y)) ? (X):(Y)) +//#define MAX(X, Y) (((X) > (Y)) ? (X):(Y)) +#define TEXTSIZE_MIN 8 +#define TEXTSIZE_MAX 36 +#define TEXT_REDUCTION_RATIO 0.8 +void JointRender::render() { + preRender(); + + char ascii[4096]; + sprintf(ascii, "b: %3.0lf s: %3.0lf e: %3.0lf t: %3.0lf p: %3.0lf", + RAD2DEG(joints.getPos("arm_base")), RAD2DEG(joints.getPos("arm_shoulder")), RAD2DEG(joints.getPos("arm_elbow")), + RAD2DEG(joints.getPos("neck_tilt")), RAD2DEG(joints.getPos("neck_pan"))); + QString label(""); + label.append(ascii); + + RobotWidget* widget = dynamic_cast(panel.getWidget()); + if (widget != NULL) { + int textSize = MIN(widget->size().width(),widget->size().height()) * rect.height() * TEXT_REDUCTION_RATIO; + if (textSize < TEXTSIZE_MIN) { + textSize = TEXTSIZE_MIN; + } else if (textSize > TEXTSIZE_MAX) { + textSize = TEXTSIZE_MAX; + } + glColor4f(colour.r, colour.g, colour.b, colour.a); + widget->renderText(0.0f,0.0f,0.0f,label,QFont("Helvetica", textSize)); + } + postRender(); +} +#endif + } // namespace gui } // namespace robotgui -- GitLab