summaryrefslogtreecommitdiffhomepage
path: root/qfunctionconfigurator
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2015-09-30 16:21:41 +0200
committerStanislaw Halik <sthalik@misaki.pl>2015-09-30 16:22:00 +0200
commitac4dc94acc5d1e1d8fd4867730b835e2aa1fcc89 (patch)
tree8ca3dc84958e572e3f890ac3f56dfda670c63f60 /qfunctionconfigurator
parent03a164ed74d616e8d5203142ec7e9738c8aae547 (diff)
parenteb7703b4ecea5540a4c4a65faa1ff4c53fe97631 (diff)
Merge branch 'unstable' into trackhat-ui
Sponsored-by: TrackHat * unstable: (112 commits) Revert "accela: try more complex deadzone algorithm" pt: add wiki link for calibration instructions qfc: more gray colors when graph is disabled qfc, mapping: disallow editing and change color when checkbox disabled qfc: don't allow editing when disabled plugin-support: workaround multiple copies of modules accela: change translation gain accela: change rotation gain pt: change extraction code freepie-udp: add license freepie-udp: update accela: try more complex deadzone algorithm accela: add helpful comment accela: revert to more quadratic spline at start also save if save pending when start tracking ui: force saving if saving timer is pending accela: slightly more linear function pose-widget: simplify freepie-udp: nix harmless warning pose-widget: add comment simple-mat: add __restrict for GNU ui: save settings on a timer ui: show a warning if configuration directory can't be used aruco: tune min/max marker size win32-joystick: fix duplicate device name selection logic ui: no need to reset settings on tracking start ui: save profile when combobox text changes, not merely index ui: save current tracker/filter/proto, not last win32-joystick: fix COM failure path win32-joystick: nix unused variable win32-joystick: allow for unique selection of joysticks qfc: also draw line from function start while moving no need to save on tracking start anymore save axis opts, not just spline control points tracker: change centering order again fix typo cmake: don't say "opentrack" twice for osx build ui: really don't switch profiles while refreshing combobox pt: fix type mismatch ui: save prior to switching configs tracker_rs: adjusted tracker's name ui: don't reload settings if config wasn't changed ui: save everything before switching profiles options: return .ini basename easier tracker_rs: more readable icon tracker_rs: prevent potential thread starvation ui: switch to newly-created config ui: decruft ui: also bail on new config if its name is ".ini" ui: auto-refresh config list ui: display up to 20 profiles w/o scrolling ui: create an empty config properly in another code branch udp-tracker: silence harmless warning plugin-support: fix typo plugin-support: set more sane RTLD flags plugin-support: free modules from address space when needed ui: rename symbol to reflect current usage ui: move some slots to private ui, shortcuts: these are slots, actually ui: no need to write anything to new empty config ui: avoid potential memory leak ft: new game support game-data: chomp newlines in extractor ui: append extension in the right place simple-mat: fix arglist SFINAE simple-mat: can use static_cast here nix default empty config. it gets created on its own. ui: these aren't qt slots ui: nix wrong headers ui: remove GNU GPL ui: simplify condition props changed only main, ui: store config files in a predefined directory pt: show extracted points' areas and success count close dialogs on switch to new module ...
Diffstat (limited to 'qfunctionconfigurator')
-rw-r--r--[-rwxr-xr-x]qfunctionconfigurator/functionconfig.cpp3
-rw-r--r--qfunctionconfigurator/qfunctionconfigurator.cpp44
-rw-r--r--qfunctionconfigurator/qfunctionconfigurator.h7
3 files changed, 43 insertions, 11 deletions
diff --git a/qfunctionconfigurator/functionconfig.cpp b/qfunctionconfigurator/functionconfig.cpp
index c97aec16..8301c7f9 100755..100644
--- a/qfunctionconfigurator/functionconfig.cpp
+++ b/qfunctionconfigurator/functionconfig.cpp
@@ -120,6 +120,7 @@ void Map::reload() {
const n t2 = t*t;
const n t3 = t*t*t;
+ // XXX we could solve for t instead -sh 20150811
const int x = .5 * ((2. * p1_x) +
(-p0_x + p2_x) * t +
(2. * p0_x - 5. * p1_x + 4. * p2_x - p3_x) * t2 +
@@ -140,7 +141,7 @@ void Map::reload() {
}
}
- num last = 0;
+ integral last = 0;
for (int i = 0; i < sz; i++)
{
if (data[i] == integral_max)
diff --git a/qfunctionconfigurator/qfunctionconfigurator.cpp b/qfunctionconfigurator/qfunctionconfigurator.cpp
index a977af77..e62049db 100644
--- a/qfunctionconfigurator/qfunctionconfigurator.cpp
+++ b/qfunctionconfigurator/qfunctionconfigurator.cpp
@@ -40,6 +40,8 @@ void QFunctionConfigurator::drawBackground()
painter.fillRect(rect(), QColor::fromRgb(204, 204, 204));
QColor bg_color(112, 154, 209);
+ if (!isEnabled())
+ bg_color = QColor(176,176,180);
painter.fillRect(pixel_bounds, bg_color);
QFont font;
@@ -47,7 +49,12 @@ void QFunctionConfigurator::drawBackground()
painter.setFont(font);
QFontMetrics metrics(font);
- QPen pen(QColor(55, 104, 170, 127), 1, Qt::SolidLine);
+ QColor color__(176, 190, 209, 127);
+
+ if (!isEnabled())
+ color__ = QColor(70, 90, 100, 96);
+
+ QPen pen(color__, 1, Qt::SolidLine);
const int xstep = 10, ystep = 10;
const double maxx = _config->maxInput();
@@ -124,13 +131,27 @@ void QFunctionConfigurator::drawFunction()
QList<QPointF> points = _config->getPoints();
+ const int alpha = !isEnabled() ? 64 : 120;
for (int i = 0; i < points.size(); i++) {
drawPoint(&painter,
point_to_pixel(points[i]),
- QColor(200, 200, 210, 120));
+ QColor(200, 200, 210, alpha),
+ isEnabled() ? QColor(50, 100, 120, 200) : QColor(200, 200, 200, 96));
+ }
+
+ QColor color = spline_color;
+
+ if (!isEnabled())
+ {
+ const int avg = 176;
+ auto color_ = color;
+ color = QColor(color_.red() * .5 + avg * .5,
+ color_.green() * .5 + avg * .5,
+ color_.blue() * .5 + avg * .5,
+ 96);
}
- QPen pen(spline_color, 1.2, Qt::SolidLine);
+ QPen pen(color, 1.2, Qt::SolidLine);
const double max = _config->maxInput();
const double step = std::max(1e-2, max / 1000.);
@@ -149,7 +170,10 @@ void QFunctionConfigurator::paintEvent(QPaintEvent *e)
QPainter p(this);
if (_background.isNull())
+ {
+ _draw_function = true;
drawBackground();
+ }
if (_draw_function) {
_draw_function = false;
@@ -162,6 +186,8 @@ void QFunctionConfigurator::paintEvent(QPaintEvent *e)
QPen pen(Qt::white, 1, Qt::SolidLine);
QList<QPointF> points = _config->getPoints();
if (points.size() && moving_control_point_idx >= 0 && moving_control_point_idx < points.size()) {
+ if (points[0].x() > 1e-2)
+ points.prepend(QPointF(0, 0));
QPointF prev = point_to_pixel(points[0]);
for (int i = 1; i < points.size(); i++) {
auto tmp = point_to_pixel(points[i]);
@@ -174,17 +200,17 @@ void QFunctionConfigurator::paintEvent(QPaintEvent *e)
// Show that point on the graph, with some lines to assist.
// This new feature is very handy for tweaking the curves!
QPointF last;
- if (_config->getLastPoint(last)) {
+ if (_config->getLastPoint(last) && isEnabled()) {
QPointF pixel_pos = point_to_pixel(last);
drawPoint(&p, pixel_pos, QColor(255, 0, 0, 120));
}
}
}
-void QFunctionConfigurator::drawPoint(QPainter *painter, const QPointF &pos, QColor colBG )
+void QFunctionConfigurator::drawPoint(QPainter *painter, const QPointF &pos, QColor colBG, QColor border)
{
painter->save();
- painter->setPen(QColor(50, 100, 120, 200));
+ painter->setPen(border);
painter->setBrush( colBG );
painter->drawEllipse(QRectF(pos.x() - pointSize,
pos.y() - pointSize,
@@ -203,7 +229,7 @@ void QFunctionConfigurator::drawLine(QPainter *painter, const QPointF &start, co
void QFunctionConfigurator::mousePressEvent(QMouseEvent *e)
{
- if (!_config)
+ if (!_config || !isEnabled())
return;
QList<QPointF> points = _config->getPoints();
if (e->button() == Qt::LeftButton) {
@@ -260,7 +286,7 @@ void QFunctionConfigurator::mousePressEvent(QMouseEvent *e)
void QFunctionConfigurator::mouseMoveEvent(QMouseEvent *e)
{
- if (!_config)
+ if (!_config || !isEnabled())
return;
QList<QPointF> points = _config->getPoints();
@@ -335,7 +361,7 @@ void QFunctionConfigurator::mouseMoveEvent(QMouseEvent *e)
void QFunctionConfigurator::mouseReleaseEvent(QMouseEvent *e)
{
- if (!_config)
+ if (!_config || !isEnabled())
return;
if (e->button() == Qt::LeftButton) {
diff --git a/qfunctionconfigurator/qfunctionconfigurator.h b/qfunctionconfigurator/qfunctionconfigurator.h
index 59c8ffeb..fab452a7 100644
--- a/qfunctionconfigurator/qfunctionconfigurator.h
+++ b/qfunctionconfigurator/qfunctionconfigurator.h
@@ -34,6 +34,11 @@ public:
spline_color = color;
update();
}
+ void force_redraw()
+ {
+ _background = QPixmap();
+ update();
+ }
protected slots:
void paintEvent(QPaintEvent *e);
void mousePressEvent(QMouseEvent *e);
@@ -42,7 +47,7 @@ protected slots:
private:
void drawBackground();
void drawFunction();
- void drawPoint(QPainter *painter, const QPointF &pt, QColor colBG );
+ void drawPoint(QPainter *painter, const QPointF &pt, QColor colBG, QColor border = QColor(50, 100, 120, 200));
void drawLine(QPainter *painter, const QPointF &start, const QPointF &end, QPen& pen);
bool point_within_pixel(const QPointF& pt, const QPointF& pixel);
protected: