summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bench/core_widget.cpp24
1 files changed, 21 insertions, 3 deletions
diff --git a/bench/core_widget.cpp b/bench/core_widget.cpp
index b687a01..d1f2b78 100644
--- a/bench/core_widget.cpp
+++ b/bench/core_widget.cpp
@@ -119,9 +119,27 @@ void core_widget::draw(int width, int height) {
}
}
- cpr = width / scale;
- xpad = (width % scale) / 2;
- ypad = (height % scale) / 2;
+ cpr = width / scale + 1;
+ xpad = INT_MAX;
+ ypad = 0;
+
+ while (cpr >= 1) {
+ --cpr;
+
+ int rows = (LIB94_CORE_SIZE - 1) / cpr + 1;
+ int new_xpad = (width - cpr * scale) / 2;
+ int new_ypad = (height - rows * scale) / 2;
+
+ if (abs(new_xpad - new_ypad) < abs(xpad - ypad)) {
+ xpad = new_xpad;
+ ypad = new_ypad;
+ }
+
+ else {
+ ++cpr;
+ break;
+ }
+ }
uint8_t *buffer = (uint8_t *)pixbuf->property_pixels().get_value();