From 062cb53a4a14b2a7a900453613a7ce498728f9d8 Mon Sep 17 00:00:00 2001 From: Yuval Tassa Date: Sat, 26 Nov 2022 05:40:10 -0800 Subject: [PATCH] In `simulate`, move "pause" label to the top left rather than the top right. PiperOrigin-RevId: 491035420 Change-Id: I94ad7ca2764716f9821df6009e5c4b50675a04be --- simulate/simulate.cc | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/simulate/simulate.cc b/simulate/simulate.cc index 792a937e..808a1718 100644 --- a/simulate/simulate.cc +++ b/simulate/simulate.cc @@ -1761,10 +1761,10 @@ void Simulate::render() { mjr_overlay(mjFONT_NORMAL, mjGRID_BOTTOMLEFT, rect, this->loadError, 0, &this->con); } - // show pause/loading label + // make pause/loading label + std::string pauseloadlabel; if (!this->run || this->loadrequest) { - mjr_overlay(mjFONT_BIG, mjGRID_TOPRIGHT, smallrect, - this->loadrequest ? "loading" : "pause", nullptr, &this->con); + pauseloadlabel = this->loadrequest ? "loading" : "pause"; } // get desired and actual percent-of-real-time @@ -1775,20 +1775,26 @@ void Simulate::render() { float realtime_offset = mju_abs(actualRealtime - desiredRealtime); bool misaligned = this->run && realtime_offset > 0.1 * desiredRealtime; - // draw realtime overlay + // make realtime overlay label + char rtlabel[30] = {'\0'}; if (desiredRealtime != 100.0 || misaligned) { - char rtlabel[30]; - // print desired realtime - int labelsize = std::snprintf(rtlabel, sizeof(rtlabel), "%g%%", desiredRealtime); + int labelsize = std::snprintf(rtlabel, + sizeof(rtlabel), "%g%%", desiredRealtime); // if misaligned, append to label if (misaligned) { - std::snprintf(rtlabel+labelsize, sizeof(rtlabel)-labelsize, " (%-4.1f%%)", actualRealtime); + std::snprintf(rtlabel+labelsize, + sizeof(rtlabel)-labelsize, " (%-4.1f%%)", actualRealtime); } + } - // draw overlay - mjr_overlay(mjFONT_BIG, mjGRID_TOPLEFT, smallrect, rtlabel, nullptr, &this->con); + // draw top left overlay + if (!pauseloadlabel.empty() || rtlabel[0]) { + std::string newline = !pauseloadlabel.empty() && rtlabel[0] ? "\n" : ""; + std::string topleftlabel = rtlabel + newline + pauseloadlabel; + mjr_overlay(mjFONT_BIG, mjGRID_TOPLEFT, smallrect, + topleftlabel.c_str(), nullptr, &this->con); }