xwhatsit util: fix some scaling issues
authorPurdea Andrei <andrei@purdea.ro>
Thu, 11 Jun 2020 21:53:58 +0000 (00:53 +0300)
committerPurdea Andrei <andrei@purdea.ro>
Thu, 11 Jun 2020 22:01:11 +0000 (01:01 +0300)
keyboards/xwhatsit/util/util/monitorwindow.cpp
keyboards/xwhatsit/util/util/monitorwindow.h
keyboards/xwhatsit/util/util/signal_level.cpp
keyboards/xwhatsit/util/util/signal_level.h

index 716983e..47c2c17 100644 (file)
@@ -41,12 +41,12 @@ MonitorWindow::~MonitorWindow()
     delete ui;
 }
 
-void MonitorWindow::setMinimumSizeUnits(unsigned int width_units, unsigned int height_units)
+void MonitorWindow::setMinimumSizeUnits(unsigned int width_units_times_8, unsigned int height_units_times_8)
 {
     this->setMinimumSize(std::max(ui->layoutSel->width() + ui->layoutSel->x() * 2,
-                                  static_cast<int>(width_units * MIN_HORIZONTAL_SCALE + 2 * HORIZONTAL_MARGIN)),
+                                  static_cast<int>(width_units_times_8 * MIN_HORIZONTAL_SCALE / 8 + 2 * HORIZONTAL_MARGIN)),
                          ui->last_label->geometry().y() + ui->last_label->geometry().height() +
-                             static_cast<int>(height_units * MIN_VERTICAL_SCALE + 2 * VERTICAL_MARGIN));
+                             static_cast<int>(height_units_times_8 * MIN_VERTICAL_SCALE / 8 + 2 * VERTICAL_MARGIN));
 }
 
 void MonitorWindow::loadLayout(QString name)
@@ -80,21 +80,21 @@ void MonitorWindow::loadLayout(QString name)
         this->close();
         return;
     }
-    keyboard_width_uis = 0;
-    keyboard_height_uis = 0;
+    keyboard_width_uis_times_8 = 0;
+    keyboard_height_uis_times_8 = 0;
     for (i=0;i<keyboard->n_layouts;i++)
     {
         const struct lay_def *layout = &keyboard->layouts[i];
         int j;
         for (j=0;j<layout->n_keys;j++)
         {
-            unsigned int w = static_cast<unsigned int>(layout->keys[j].x + layout->keys[j].w + 0.5);
-            unsigned int h = static_cast<unsigned int>(layout->keys[j].y + layout->keys[j].h + 0.5);
-            if (w > keyboard_width_uis) keyboard_width_uis = w;
-            if (h > keyboard_height_uis) keyboard_height_uis = h;
+            const unsigned int w8 = static_cast<unsigned int>((layout->keys[j].x + layout->keys[j].w)*8 + 0.5);
+            const unsigned int h8 = static_cast<unsigned int>((layout->keys[j].y + layout->keys[j].h)*8 + 0.5);
+            if (w8 > keyboard_width_uis_times_8) keyboard_width_uis_times_8 = w8;
+            if (h8 > keyboard_height_uis_times_8) keyboard_height_uis_times_8 = h8;
         }
     }
-    setMinimumSizeUnits(keyboard_width_uis, keyboard_height_uis);
+    setMinimumSizeUnits(keyboard_width_uis_times_8, keyboard_height_uis_times_8);
 }
 
 void MonitorWindow::displaySquare(int x, int y, int w, int h, unsigned int col, unsigned int row, QPainter &painter)
@@ -150,8 +150,8 @@ void MonitorWindow::paintEvent(QPaintEvent *event)
     const struct lay_def *layout = this->current_layout;
     if (layout)
     {
-        double scale_x = (1. * this->width() - 2 * HORIZONTAL_MARGIN) / keyboard_width_uis;
-        double scale_y = (1. * this->height() - VERTICAL_MARGIN - yadd) / keyboard_height_uis;
+        double scale_x = (1. * this->width() - 1 - 2 * HORIZONTAL_MARGIN) * 8 / keyboard_width_uis_times_8;
+        double scale_y = (1. * this->height() - 1 - VERTICAL_MARGIN - yadd) * 8 / keyboard_height_uis_times_8;
         int j;
         for (j=0;j<layout->n_keys;j++)
         {
@@ -195,9 +195,9 @@ void MonitorWindow::on_layoutSel_activated(const QString &arg1)
     updateCurrentLayout();
     if (this->current_layout)
     {
-        setMinimumSizeUnits(this->keyboard_width_uis, this->keyboard_height_uis);
+        setMinimumSizeUnits(this->keyboard_width_uis_times_8, this->keyboard_height_uis_times_8);
     } else {
-        setMinimumSizeUnits(this->keyboard->cols, this->keyboard->rows);
+        setMinimumSizeUnits(this->keyboard->cols * 8, this->keyboard->rows * 8);
     }
     this->repaint();
 }
index 0dfe1b6..81c48fc 100644 (file)
@@ -43,11 +43,11 @@ private:
     uint16_t get_threshold(unsigned int col, unsigned int row);
     void updateCurrentLayout();
     void displaySquare(int x, int y, int w, int h, unsigned int col, unsigned int row, QPainter &painter);
-    void setMinimumSizeUnits(unsigned int width_units, unsigned int height_units);
+    void setMinimumSizeUnits(unsigned int width_units_times_8, unsigned int height_units_times_8);
     std::vector<std::vector<int>> is_was_key_pressed;
 
-    unsigned int keyboard_width_uis;
-    unsigned int keyboard_height_uis;
+    unsigned int keyboard_width_uis_times_8;
+    unsigned int keyboard_height_uis_times_8;
     static constexpr double MIN_HORIZONTAL_SCALE = 32;
     static constexpr double MIN_VERTICAL_SCALE = 32;
     static const int HORIZONTAL_MARGIN = 10;
index c7f6059..74799d0 100644 (file)
@@ -40,12 +40,12 @@ SignalLevelMonitorWindow::~SignalLevelMonitorWindow()
     delete ui;
 }
 
-void SignalLevelMonitorWindow::setMinimumSizeUnits(unsigned int width_units, unsigned int height_units)
+void SignalLevelMonitorWindow::setMinimumSizeUnits(unsigned int width_units_times_8, unsigned int height_units_times_8)
 {
     this->setMinimumSize(std::max(ui->layoutSel->width() + ui->layoutSel->x() * 2,
-                                  static_cast<int>(width_units * MIN_HORIZONTAL_SCALE + 2 * HORIZONTAL_MARGIN)),
+                                  static_cast<int>(width_units_times_8 * MIN_HORIZONTAL_SCALE / 8 + 2 * HORIZONTAL_MARGIN)),
                          ui->last_label->geometry().y() + ui->last_label->geometry().height() +
-                             static_cast<int>(height_units * MIN_VERTICAL_SCALE + 2 * VERTICAL_MARGIN));
+                             static_cast<int>(height_units_times_8 * MIN_VERTICAL_SCALE / 8 + 2 * VERTICAL_MARGIN));
 }
 
 void SignalLevelMonitorWindow::loadLayout(QString name)
@@ -81,21 +81,21 @@ void SignalLevelMonitorWindow::loadLayout(QString name)
         this->close();
         return;
     }
-    keyboard_width_uis = 0;
-    keyboard_height_uis = 0;
+    keyboard_width_uis_times_8 = 0;
+    keyboard_height_uis_times_8 = 0;
     for (i=0;i<keyboard->n_layouts;i++)
     {
         const struct lay_def *layout = &keyboard->layouts[i];
         int j;
         for (j=0;j<layout->n_keys;j++)
         {
-            unsigned int w = static_cast<unsigned int>(layout->keys[j].x + layout->keys[j].w + 0.5);
-            unsigned int h = static_cast<unsigned int>(layout->keys[j].y + layout->keys[j].h + 0.5);
-            if (w > keyboard_width_uis) keyboard_width_uis = w;
-            if (h > keyboard_height_uis) keyboard_height_uis = h;
+            unsigned int w8 = static_cast<unsigned int>((layout->keys[j].x + layout->keys[j].w)*8 + 0.5);
+            unsigned int h8 = static_cast<unsigned int>((layout->keys[j].y + layout->keys[j].h)*8 + 0.5);
+            if (w8 > keyboard_width_uis_times_8) keyboard_width_uis_times_8 = w8;
+            if (h8 > keyboard_height_uis_times_8) keyboard_height_uis_times_8 = h8;
         }
     }
-    setMinimumSizeUnits(keyboard_width_uis, keyboard_height_uis);
+    setMinimumSizeUnits(keyboard_width_uis_times_8, keyboard_height_uis_times_8);
 }
 
 QColor SignalLevelMonitorWindow::getColor(uint16_t value, uint16_t mins, uint16_t maxs)
@@ -172,8 +172,8 @@ void SignalLevelMonitorWindow::paintEvent(QPaintEvent *event)
     const struct lay_def *layout = this->current_layout;
     if (layout)
     {
-        double scale_x = (1. * this->width() - 2 * HORIZONTAL_MARGIN) / keyboard_width_uis;
-        double scale_y = (1. * this->height() - VERTICAL_MARGIN - yadd) / keyboard_height_uis;
+        double scale_x = (1. * this->width() - 1 - 2 * HORIZONTAL_MARGIN) * 8 / keyboard_width_uis_times_8;
+        double scale_y = (1. * this->height() - 1 - VERTICAL_MARGIN - yadd) * 8 / keyboard_height_uis_times_8;
         int j;
         uint16_t mins = 0xffffu, maxs = 0xffffu;
         for (j=0;j<layout->n_keys;j++)
@@ -252,9 +252,9 @@ void SignalLevelMonitorWindow::on_layoutSel_activated(const QString &arg1)
     updateCurrentLayout();
     if (this->current_layout)
     {
-        setMinimumSizeUnits(this->keyboard_width_uis, this->keyboard_height_uis);
+        setMinimumSizeUnits(this->keyboard_width_uis_times_8, this->keyboard_height_uis_times_8);
     } else {
-        setMinimumSizeUnits(this->keyboard->cols, this->keyboard->rows);
+        setMinimumSizeUnits(this->keyboard->cols * 8, this->keyboard->rows * 8);
     }
     this->repaint();
 }
index e548be1..922c12a 100644 (file)
@@ -44,10 +44,10 @@ private:
     QColor getColor(uint16_t value, uint16_t mins, uint16_t maxs);
     void displaySquare(int x, int y, int w, int h, unsigned int col, unsigned int row, uint16_t mins, uint16_t maxs, QPainter &painter);
     void updateCurrentLayout();
-    void setMinimumSizeUnits(unsigned int width_units, unsigned int height_units);
+    void setMinimumSizeUnits(unsigned int width_units_times_8, unsigned int height_units_times_8);
 
-    unsigned int keyboard_width_uis;
-    unsigned int keyboard_height_uis;
+    unsigned int keyboard_width_uis_times_8;
+    unsigned int keyboard_height_uis_times_8;
     static constexpr double MIN_HORIZONTAL_SCALE = 32;
     static constexpr double MIN_VERTICAL_SCALE = 42;
     static const int HORIZONTAL_MARGIN = 10;