Add UI options for rMQR

And update manual to include rMQR
This commit is contained in:
Robin Stuart 2019-11-27 16:54:03 +00:00
parent ac00e381a6
commit 05784fb9cf
4 changed files with 1183 additions and 742 deletions

View File

@ -325,6 +325,7 @@ Numeric Value | Barcode Name
141 | Code One
142 | Grid Matrix
143 | UPNQR (Univerzalnega Plačilnega Naloga QR)
145 | Rectangular Micro QR Code (rMQR)
--------------------------------------------------------------------------------
4.4 Adjusting height
@ -1034,6 +1035,7 @@ Value |
141 | BARCODE_CODEONE | Code One
142 | BARCODE_GRIDMATRIX | Grid Matrix
143 | BARCODE_UPNQR | UPNQR (Univerzalnega Plačilnega Naloga QR)
145 | BARCODE_RMQR | Rectangular Micro QR Code (rMQR)
--------------------------------------------------------------------------------
5.8 Adjusting other output options
@ -1963,7 +1965,71 @@ Input | Version | Symbol Size
4 | M4 | 17 x 17
---------------------------------
6.6.4 UPNQR (Univerzalnega Plačilnega Naloga QR)
6.6.4 Rectangular Micro QR Code (rMQR)
--------------------------------------
A rectangular version of QR Code. Like QR code rMQR supports encoding of
GS-1 data, Latin-1 and Kanji characters in the Shift-JIS encoding scheme.
It does not support other ISO 8859 character sets or Unicode. As with other
symbologies data should be entered as UTF-8 with the conversion to Shift-JIS
being handled by Zint. The amount of ECC codewords can be adjusted using
--secure=, however only ECC levels M and H are valid for this type of symbol.
-------------------------------------------------------------------------
Input | ECC Level | Error Correction Capacity | Recovery Capacity
-------------------------------------------------------------------------
2 | M (default) | Approx 37% of symbol | Approx 15%
4 | H | Approx 65% of symbol | Approx 30%
-------------------------------------------------------------------------
The preferred symbol sizes can be selected using the --vers= option as shown
in the table below. Input values between 33 and 38 fix the height of the
symbol while allowing Zint to determine the minimum symbol width.
---------------------------------
Input | Version | Symbol Size
---------------------------------
1 | R7x43 | 7 x 73
2 | R7x59 | 7 x 59
3 | R7x77 | 7 x 77
4 | R7x99 | 7 x 99
5 | R7x139 | 7 x 139
6 | R9x43 | 9 x 43
7 | R9x59 | 9 x 59
8 | R9x77 | 9 x 77
9 | R9x99 | 9 x 99
10 | R9x139 | 9 x 139
11 | R11x27 | 11 x 27
12 | R11x43 | 11 x 43
13 | R11x59 | 11 x 59
14 | R11x77 | 11 x 77
15 | R11x99 | 11 x 99
16 | R11x139 | 11 x 139
17 | R13x27 | 13 x 27
18 | R13x43 | 13 x 43
19 | R13x59 | 13 x 59
20 | R13x77 | 13 x 77
21 | R13x99 | 13 x 99
22 | R13x139 | 13 x 139
23 | R15x43 | 15 x 43
24 | R15x59 | 15 x 59
25 | R15x77 | 15 x 77
26 | R15x99 | 15 x 99
27 | R15x139 | 15 x 139
28 | R17x43 | 17 x 43
29 | R17x59 | 17 x 59
30 | R17x77 | 17 x 77
31 | R17x99 | 17 x 99
32 | R17x139 | 17 x 139
---------------------------------
33 | Fixed height 7
34 | Fixed height 9
35 | Fixed height 11
36 | Fixed height 13
37 | Fixed height 15
38 | Fixed height 17
---------------------------------
6.6.5 UPNQR (Univerzalnega Plačilnega Naloga QR)
------------------------------------------------
A variation of QR Code used by Združenje Bank Slovenije (Bank Association of
Slovenia). The size, error correction level and ECI are set by Zint and do not
@ -1976,7 +2042,7 @@ The following example creates a symbol from data saved as an ISO-8859-2 file:
zint -o upnqr.png -b 143 --border=5 --scale=3 --binary -i ./upn.txt
6.6.5 Maxicode (ISO 16023)
6.6.6 Maxicode (ISO 16023)
--------------------------
Developed by UPS the Maxicode symbology employs a grid of hexagons surrounding
a 'bulls-eye' finder pattern. This symbology is designed for the identification
@ -2034,7 +2100,7 @@ Mode | Maximum Data Lenth | Maximum Data Length | Number of Error
-----------------------------------------------------------------------------
* - secondary only
6.6.6 Aztec Code (ISO 24778)
6.6.7 Aztec Code (ISO 24778)
----------------------------
Invented by Andrew Longacre at Welch Allyn Inc in 1995 the Aztec Code symbol is
a matrix symbol with a distinctive bulls-eye finder pattern. Zint can generate
@ -2116,13 +2182,13 @@ A separate symbology ID can be used to encode Health Industry Barcode (HIBC)
data which adds a leading '+' character and a modulo-49 check digit to the
encoded data.
6.6.7 Aztec Runes
6.6.8 Aztec Runes
-----------------
A truncated version of compact Aztec Code for encoding whole integers between 0
and 255. Includes Reed-Solomon error correction. As defined in ISO/IEC 24778
Annex A.
6.6.8 Code One
6.6.9 Code One
--------------
A matrix symbology developed by Ted Williams in 1992 which encodes data in a
way similar to Data Matrix ECC200. Code One is able to encode the Latin-1
@ -2150,7 +2216,7 @@ Input | Version | Size | Numeric | Alphanumeric
Version S symbols can only encode numeric data. The width of version S and
version T symbols is determined by the length of the input data.
6.6.9 Grid Matrix
6.6.10 Grid Matrix
-----------------
By default Grid Matrix supports encoding in Latin-1 and Chinese characters
within the GB 2312 standard set to be encoded in a checkerboard pattern. Input
@ -2191,7 +2257,7 @@ Mode | Error Correction Capacity
5 | Approximately 50%
----------------------------------
6.6.10 DotCode
6.6.11 DotCode
-------------
DotCode uses a grid of dots in a rectangular formation to encode characters up
to a maximum of approximately 450 characters (or 900 numeric digits). The
@ -2203,7 +2269,7 @@ the image to a larger value than the default (e.g. approx 10) for the dots to
be plotted correctly. Approximately 33% of the resulting symbol is comprised of
error correction codewords.
6.6.11 Han Xin Code
6.6.12 Han Xin Code
-------------------
Also known as Chinese Sensible Code, Han Xin is a symbology which is still
under

344
frontend_qt/grpRMQR.ui Normal file
View File

@ -0,0 +1,344 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>grpRMQR</class>
<widget class="QWidget" name="grpRMQR">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>441</width>
<height>238</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QGridLayout" name="grpRMQROptions">
<item row="0" column="0">
<widget class="QRadioButton" name="radRMQRAuto">
<property name="text">
<string>A&amp;utomatic Resizing</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QRadioButton" name="radRMQRSize">
<property name="text">
<string>Adjust Si&amp;ze To:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="cmbRMQRSize">
<property name="enabled">
<bool>false</bool>
</property>
<item>
<property name="text">
<string>R7x43</string>
</property>
</item>
<item>
<property name="text">
<string>R7x59</string>
</property>
</item>
<item>
<property name="text">
<string>R7x77</string>
</property>
</item>
<item>
<property name="text">
<string>R7x99</string>
</property>
</item>
<item>
<property name="text">
<string>R7x139</string>
</property>
</item>
<item>
<property name="text">
<string>R9x43</string>
</property>
</item>
<item>
<property name="text">
<string>R9x59</string>
</property>
</item>
<item>
<property name="text">
<string>R9x77</string>
</property>
</item>
<item>
<property name="text">
<string>R9x99</string>
</property>
</item>
<item>
<property name="text">
<string>R9x139</string>
</property>
</item>
<item>
<property name="text">
<string>R11x27</string>
</property>
</item>
<item>
<property name="text">
<string>R11x43</string>
</property>
</item>
<item>
<property name="text">
<string>R11x59</string>
</property>
</item>
<item>
<property name="text">
<string>R11x77</string>
</property>
</item>
<item>
<property name="text">
<string>R11x99</string>
</property>
</item>
<item>
<property name="text">
<string>R11x139</string>
</property>
</item>
<item>
<property name="text">
<string>R13x27</string>
</property>
</item>
<item>
<property name="text">
<string>R13x43</string>
</property>
</item>
<item>
<property name="text">
<string>R13x59</string>
</property>
</item>
<item>
<property name="text">
<string>R13x77</string>
</property>
</item>
<item>
<property name="text">
<string>R13x99</string>
</property>
</item>
<item>
<property name="text">
<string>R13x139</string>
</property>
</item>
<item>
<property name="text">
<string>R15x43</string>
</property>
</item>
<item>
<property name="text">
<string>R15x59</string>
</property>
</item>
<item>
<property name="text">
<string>R15x77</string>
</property>
</item>
<item>
<property name="text">
<string>R15x99</string>
</property>
</item>
<item>
<property name="text">
<string>R15x139</string>
</property>
</item>
<item>
<property name="text">
<string>R17x43</string>
</property>
</item>
<item>
<property name="text">
<string>R17x59</string>
</property>
</item>
<item>
<property name="text">
<string>R17x77</string>
</property>
</item>
<item>
<property name="text">
<string>R17x99</string>
</property>
</item>
<item>
<property name="text">
<string>R17x139</string>
</property>
</item>
<item>
<property name="text">
<string>R7x Automatic Width</string>
</property>
</item>
<item>
<property name="text">
<string>R9x Automatic Width</string>
</property>
</item>
<item>
<property name="text">
<string>R11x Automatic Width</string>
</property>
</item>
<item>
<property name="text">
<string>R13x Automatic Width</string>
</property>
</item>
<item>
<property name="text">
<string>R15 x Automatic Width</string>
</property>
</item>
<item>
<property name="text">
<string>R17 x Automatic Width</string>
</property>
</item>
</widget>
</item>
<item row="2" column="0">
<widget class="QRadioButton" name="radRMQRECC">
<property name="text">
<string>Add &amp;Error Correction:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="cmbRMQRECC">
<property name="enabled">
<bool>false</bool>
</property>
<item>
<property name="text">
<string>~37% (Level M)</string>
</property>
</item>
<item>
<property name="text">
<string>~65% (Level H)</string>
</property>
</item>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QGroupBox" name="grpRMQRMode">
<property name="minimumSize">
<size>
<width>0</width>
<height>70</height>
</size>
</property>
<property name="title">
<string>Data Encoding</string>
</property>
<widget class="QWidget" name="gridLayoutWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>30</y>
<width>411</width>
<height>80</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QRadioButton" name="radRMQRStand">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>S&amp;tandard Mode</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QRadioButton" name="radRMQRGS1">
<property name="text">
<string>&amp;GS-1 Data Mode</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>radRMQRSize</sender>
<signal>toggled(bool)</signal>
<receiver>cmbRMQRSize</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>89</x>
<y>39</y>
</hint>
<hint type="destinationlabel">
<x>255</x>
<y>46</y>
</hint>
</hints>
</connection>
<connection>
<sender>radRMQRECC</sender>
<signal>toggled(bool)</signal>
<receiver>cmbRMQRECC</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>95</x>
<y>79</y>
</hint>
<hint type="destinationlabel">
<x>308</x>
<y>79</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@ -101,7 +101,7 @@ MainWindow::MainWindow(QWidget* parent, Qt::WindowFlags fl)
"PLANET",
"Postnet",
"QR Code (ISO 18004)",
"Reduced Micro QR (rMQR)",
"Rectangular Micro QR (rMQR)",
"Royal Mail 4-state Barcode",
"Royal Mail 4-state Mailmark",
"Telepen",
@ -567,6 +567,23 @@ void MainWindow::change_options()
connect(m_optionWidget->findChild<QObject*>("radQRHIBC"), SIGNAL(clicked( bool )), SLOT(update_preview()));
}
if(metaObject()->enumerator(0).value(bstyle->currentIndex()) == BARCODE_RMQR)
{
QFile file(":/grpRMQR.ui");
if (!file.open(QIODevice::ReadOnly))
return;
m_optionWidget=uiload.load(&file);
file.close();
tabMain->insertTab(1,m_optionWidget,tr("rMQR Code"));
connect(m_optionWidget->findChild<QObject*>("radRMQRAuto"), SIGNAL(clicked( bool )), SLOT(update_preview()));
connect(m_optionWidget->findChild<QObject*>("radRMQRSize"), SIGNAL(clicked( bool )), SLOT(update_preview()));
connect(m_optionWidget->findChild<QObject*>("radRMQRECC"), SIGNAL(clicked( bool )), SLOT(update_preview()));
connect(m_optionWidget->findChild<QObject*>("cmbRMQRSize"), SIGNAL(currentIndexChanged( int )), SLOT(update_preview()));
connect(m_optionWidget->findChild<QObject*>("cmbRMQRECC"), SIGNAL(currentIndexChanged( int )), SLOT(update_preview()));
connect(m_optionWidget->findChild<QObject*>("radRMQRStand"), SIGNAL(clicked( bool )), SLOT(update_preview()));
connect(m_optionWidget->findChild<QObject*>("radRMQRGS1"), SIGNAL(clicked( bool )), SLOT(update_preview()));
}
if(metaObject()->enumerator(0).value(bstyle->currentIndex()) == BARCODE_HANXIN)
{
QFile file (":/grpHX.ui");
@ -979,6 +996,19 @@ void MainWindow::update_preview()
m_bc.bc.setSecurityLevel(m_optionWidget->findChild<QComboBox*>("cmbMQRECC")->currentIndex() + 1);
break;
case BARCODE_RMQR:
m_bc.bc.setSymbol(BARCODE_RMQR);
if(m_optionWidget->findChild<QRadioButton*>("radRMQRGS1")->isChecked())
m_bc.bc.setInputMode(GS1_MODE);
if(m_optionWidget->findChild<QRadioButton*>("radRMQRSize")->isChecked())
m_bc.bc.setWidth(m_optionWidget->findChild<QComboBox*>("cmbRMQRSize")->currentIndex() + 1);
if(m_optionWidget->findChild<QRadioButton*>("radRMQRECC")->isChecked())
m_bc.bc.setSecurityLevel(m_optionWidget->findChild<QComboBox*>("cmbRMQRECC")->currentIndex() * 2 + 2);
break;
case BARCODE_GRIDMATRIX:
m_bc.bc.setSymbol(BARCODE_GRIDMATRIX);
if(m_optionWidget->findChild<QRadioButton*>("radGridSize")->isChecked())

View File

@ -24,5 +24,6 @@
<file>grpHX.ui</file>
<file>grpDotCode.ui</file>
<file>grpCodablockF.ui</file>
<file>grpRMQR.ui</file>
</qresource>
</RCC>