Add Codablock options to Studio

Also remove divide by zero bug calculating row height
This commit is contained in:
Robin Stuart 2016-09-17 11:39:01 +01:00
parent c351ed492e
commit 0dd072437e
5 changed files with 36 additions and 11 deletions

View File

@ -378,23 +378,22 @@ static int hibc(struct zint_symbol *symbol, unsigned char source[], size_t lengt
static void check_row_heights(struct zint_symbol *symbol) { static void check_row_heights(struct zint_symbol *symbol) {
/* Check that rows with undefined heights are never less than 5x */ /* Check that rows with undefined heights are never less than 5x */
int large_bar_count; int large_bar_count = 0;
int i; int i;
int preset_height; int preset_height = 0;
int large_bar_height; int large_bar_height = 0;
large_bar_count = 0;
preset_height = 0;
for (i = 0; i < symbol->rows; i++) { for (i = 0; i < symbol->rows; i++) {
preset_height += symbol->row_height[i]; preset_height += symbol->row_height[i];
if (symbol->row_height[i] == 0) { if (symbol->row_height[i] == 0) {
large_bar_count++; large_bar_count++;
} }
} }
large_bar_height = (symbol->height - preset_height) / large_bar_count;
if (large_bar_count == 0) { if (large_bar_count == 0) {
symbol->height = preset_height; symbol->height = preset_height;
} else {
large_bar_height = (symbol->height - preset_height) / large_bar_count;
} }
if (large_bar_height < 5) { if (large_bar_height < 5) {

View File

@ -52,7 +52,7 @@ void types(void) {
"21: Leitcode 70: RM4SCC 116: Han Xin Code\n" "21: Leitcode 70: RM4SCC 116: Han Xin Code\n"
"22: Identcode 71: Data Matrix 128: Aztec Runes\n" "22: Identcode 71: Data Matrix 128: Aztec Runes\n"
"23: Code 16k 72: EAN-14 129: Code 32\n" "23: Code 16k 72: EAN-14 129: Code 32\n"
"24: Code 49 74: Codablock 130: Comp EAN\n" "24: Code 49 74: Codablock-F 130: Comp EAN\n"
"25: Code 93 75: NVE-18 131: Comp GS1-128\n" "25: Code 93 75: NVE-18 131: Comp GS1-128\n"
"28: Flattermarken 76: Japanese Post 132: Comp DataBar Omni\n" "28: Flattermarken 76: Japanese Post 132: Comp DataBar Omni\n"
"29: GS1 DataBar Omni 77: Korea Post 133: Comp DataBar Ltd\n" "29: GS1 DataBar Omni 77: Korea Post 133: Comp DataBar Ltd\n"

View File

@ -25,6 +25,7 @@ FORMS += extData.ui \
grpC49.ui \ grpC49.ui \
grpChannel.ui \ grpChannel.ui \
grpCodeOne.ui \ grpCodeOne.ui \
grpCodablockF.ui \
grpDBExtend.ui \ grpDBExtend.ui \
grpDM.ui \ grpDM.ui \
grpGrid.ui \ grpGrid.ui \

View File

@ -39,7 +39,7 @@ MainWindow::MainWindow(QWidget* parent, Qt::WFlags fl)
"Aztec Runes", "Aztec Runes",
"Channel Code", "Channel Code",
"Codabar", "Codabar",
"Codablock", "Codablock-F",
"Code 11", "Code 11",
"Code 128 (ISO 15417)", "Code 128 (ISO 15417)",
"Code 16k", "Code 16k",
@ -365,6 +365,21 @@ void MainWindow::change_options()
connect(m_optionWidget->findChild<QObject*>("radC16kStand"), SIGNAL(toggled( bool )), SLOT(update_preview())); connect(m_optionWidget->findChild<QObject*>("radC16kStand"), SIGNAL(toggled( bool )), SLOT(update_preview()));
} }
if(metaObject()->enumerator(0).value(bstyle->currentIndex()) == BARCODE_CODABLOCKF)
{
QFile file (":/grpCodablockF.ui");
if (!file.open(QIODevice::ReadOnly))
return;
m_optionWidget=uiload.load(&file);
file.close();
tabMain->insertTab(1,m_optionWidget,tr("Codablock-F"));
connect(m_optionWidget->findChild<QObject*>("radCbfAutosize"), SIGNAL(toggled( bool )), SLOT(update_preview()));
connect(m_optionWidget->findChild<QObject*>("radCbfSetWidth"), SIGNAL(toggled( bool )), SLOT(update_preview()));
connect(m_optionWidget->findChild<QObject*>("radCbfSetHeight"), SIGNAL(toggled( bool )), SLOT(update_preview()));
connect(m_optionWidget->findChild<QObject*>("cmbCbfWidth"), SIGNAL(currentIndexChanged( int )), SLOT(update_preview()));
connect(m_optionWidget->findChild<QObject*>("cmbCbfHeight"), SIGNAL(currentIndexChanged( int )), SLOT(update_preview()));
}
if(metaObject()->enumerator(0).value(bstyle->currentIndex()) == BARCODE_DATAMATRIX) if(metaObject()->enumerator(0).value(bstyle->currentIndex()) == BARCODE_DATAMATRIX)
{ {
QFile file(":/grpDM.ui"); QFile file(":/grpDM.ui");
@ -744,6 +759,15 @@ void MainWindow::update_preview()
m_bc.bc.setInputMode(GS1_MODE); m_bc.bc.setInputMode(GS1_MODE);
break; break;
case BARCODE_CODABLOCKF:
m_bc.bc.setSymbol(BARCODE_CODABLOCKF);
if(m_optionWidget->findChild<QRadioButton*>("radCbfSetWidth")->isChecked())
m_bc.bc.setWidth(m_optionWidget->findChild<QComboBox*>("cmbCbfWidth")->currentIndex() + 6);
// Height selection uses option 1 in zint_symbol
if(m_optionWidget->findChild<QRadioButton*>("radCbfSetHeight")->isChecked())
m_bc.bc.setSecurityLevel(m_optionWidget->findChild<QComboBox*>("cmbCbfHeight")->currentIndex() + 1);
break;
case BARCODE_DATAMATRIX: case BARCODE_DATAMATRIX:
m_bc.bc.setSecurityLevel(1); m_bc.bc.setSecurityLevel(1);
if(m_optionWidget->findChild<QRadioButton*>("radDM200HIBC")->isChecked()) if(m_optionWidget->findChild<QRadioButton*>("radDM200HIBC")->isChecked())

View File

@ -23,5 +23,6 @@
<file>images/zint.png</file> <file>images/zint.png</file>
<file>grpHX.ui</file> <file>grpHX.ui</file>
<file>grpDotCode.ui</file> <file>grpDotCode.ui</file>
<file>grpCodablockF.ui</file>
</qresource> </qresource>
</RCC> </RCC>