Большое спасибо Адаму Бахману за помощь в поиске ответа на этот вопрос.
Ниже приведен его код, демонстрирующий использование метода getTextBounds()
для расчета размера буфера (и странного способа, которым он может вам возвращать несколько параметров):
#include <Adafruit_GFX.h>
#include <Adafruit_LEDBackpack.h>
/************************ LED Matrix *******************************/
Adafruit_8x16minimatrix matrix = Adafruit_8x16minimatrix();
void setup() {
Serial.begin(115200);
while(! Serial);
}
void loop() {
// void Adafruit_GFX::getTextBounds(const char *str, int16_t x, int16_t y,
// int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h) {
int16_t x1, y1;
uint16_t w, h;
matrix.getTextBounds((const char*)"my string is here", 0, 0, &x1, &y1, &w, &h);
Serial.print("x1="); Serial.print(x1);
Serial.print(", y1="); Serial.print(y1);
Serial.print(", w="); Serial.print(w);
Serial.print(", h="); Serial.print(h);
Serial.println(" ");
delay(1000);
}
Вывод которого выглядит так:
x1=0, y1=0, w=6, h=136
x1=0, y1=0, w=6, h=136
x1=0, y1=0, w=6, h=136
x1=0, y1=0, w=6, h=136
x1=0, y1=0, w=6, h=136
x1=0, y1=0, w=6, h=136
В данном случае, поскольку он использует вращение по умолчанию, нам нужно значение h
, но в моем случае, поскольку я установил matrix.setRotation(1);
, вместо него я бы использовал w
.