90 lines
1.9 KiB
C++
90 lines
1.9 KiB
C++
#include "qrdisplay.h"
|
|
|
|
// this only works for ECC_MEDIUM
|
|
uint16_t get_qrver_from_strlen(std::string_view str)
|
|
{
|
|
// alpha numeric, ECC Level M
|
|
// version 1-40
|
|
uint32_t len = str.length();
|
|
if (len <= 20)
|
|
return 1;
|
|
else if (len <= 38)
|
|
return 2;
|
|
else if (len <= 61)
|
|
return 3;
|
|
else if (len <= 90)
|
|
return 4;
|
|
else if (len <= 122)
|
|
return 5;
|
|
else if (len <= 154)
|
|
return 6;
|
|
else if (len <= 178)
|
|
return 7;
|
|
else if (len <= 221)
|
|
return 8;
|
|
else if (len <= 262)
|
|
return 9;
|
|
else if (len <= 311)
|
|
return 10;
|
|
else if (len <= 366)
|
|
return 11;
|
|
else if (len <= 419)
|
|
return 12;
|
|
else if (len <= 483)
|
|
return 13;
|
|
else if (len <= 528)
|
|
return 14;
|
|
else if (len <= 600)
|
|
return 15;
|
|
else if (len <= 656)
|
|
return 16;
|
|
else if (len <= 734)
|
|
return 17;
|
|
else if (len <= 816)
|
|
return 18;
|
|
else if (len <= 909)
|
|
return 19;
|
|
else if (len <= 970)
|
|
return 20;
|
|
else if (len <= 1035)
|
|
return 21;
|
|
else if (len <= 1134)
|
|
return 22;
|
|
else if (len <= 1248)
|
|
return 23;
|
|
else if (len <= 1326)
|
|
return 24;
|
|
else if (len <= 1451)
|
|
return 25;
|
|
else if (len <= 1542)
|
|
return 26;
|
|
else if (len <= 1637)
|
|
return 27;
|
|
else if (len <= 1732)
|
|
return 28;
|
|
else if (len <= 1839)
|
|
return 29;
|
|
else if (len <= 1994)
|
|
return 30;
|
|
else if (len <= 2113)
|
|
return 31;
|
|
else if (len <= 2238)
|
|
return 32;
|
|
else if (len <= 2369)
|
|
return 33;
|
|
else if (len <= 2506)
|
|
return 34;
|
|
else if (len <= 2632)
|
|
return 35;
|
|
else if (len <= 2780)
|
|
return 36;
|
|
else if (len <= 2894)
|
|
return 37;
|
|
else if (len <= 3054)
|
|
return 38;
|
|
else if (len <= 3220)
|
|
return 39;
|
|
else
|
|
return 40;
|
|
}
|