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",
@ -57,7 +57,7 @@ MainWindow::MainWindow(QWidget* parent, Qt::WFlags fl)
"Data Matrix (ISO 16022)", "Data Matrix (ISO 16022)",
"Deutsche Post Identcode", "Deutsche Post Identcode",
"Deutsche Post Leitcode", "Deutsche Post Leitcode",
"DotCode", "DotCode",
"Dutch Post KIX", "Dutch Post KIX",
"EAN-14", "EAN-14",
"European Article Number (EAN)", "European Article Number (EAN)",
@ -71,7 +71,7 @@ MainWindow::MainWindow(QWidget* parent, Qt::WFlags fl)
"GS1 DataBar Stacked", "GS1 DataBar Stacked",
"GS1 DataBar Stacked Omnidirectional", "GS1 DataBar Stacked Omnidirectional",
"Han Xin (Chinese Sensible) Code", "Han Xin (Chinese Sensible) Code",
"ITF-14", "ITF-14",
"International Standard Book Number (ISBN)", "International Standard Book Number (ISBN)",
"Japanese Postal Barcode", "Japanese Postal Barcode",
"Korean Postal Barcode", "Korean Postal Barcode",
@ -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>