/** * \brief Set decoding behavior property * \param dec * \param prop * \param value * \return DmtxPass | DmtxFail */ extern DmtxPassFail dmtxDecodeSetProp(DmtxDecode *dec, int prop, int value) { switch(prop) { case DmtxPropEdgeMin: dec->edgeMin = value; break; case DmtxPropEdgeMax: dec->edgeMax = value; break; case DmtxPropScanGap: dec->scanGap = value; /* XXX Should this be scaled? */ break; case DmtxPropSquareDevn: dec->squareDevn = cos(value * (M_PI/180.0)); break; case DmtxPropSymbolSize: dec->sizeIdxExpected = value; break; case DmtxPropEdgeThresh: dec->edgeThresh = value; break; /* Min and Max values arrive unscaled */ case DmtxPropXmin: dec->xMin = value / dec->scale; break; case DmtxPropXmax: dec->xMax = value / dec->scale; break; case DmtxPropYmin: dec->yMin = value / dec->scale; break; case DmtxPropYmax: dec->yMax = value / dec->scale; break; default: break; } if(dec->squareDevn <= 0.0 || dec->squareDevn >= 1.0) return DmtxFail; if(dec->scanGap < 1) return DmtxFail; if(dec->edgeThresh < 1 || dec->edgeThresh > 100) return DmtxFail; /* Reinitialize scangrid in case any inputs changed */ dec->grid = InitScanGrid(dec); return DmtxPass; }
BOOL CScanDlg::OnInitDialog() { CDialog::OnInitDialog(); ASSERT(m_pScanner); InitScanGrid(); // Sleep(3000); AddComDeviceToGrid(m_pScanner->m_szTstatScandRet); AddNetDeviceToGrid(m_pScanner->m_szNCScanRet); return TRUE; }
/** * \brief Initialize decode struct with default values * \param img * \return Initialized DmtxDecode struct */ extern DmtxDecode * dmtxDecodeCreate(DmtxImage *img, int scale) { DmtxDecode *dec; int width, height; dec = (DmtxDecode *)calloc(1, sizeof(DmtxDecode)); if(dec == NULL) return NULL; width = dmtxImageGetProp(img, DmtxPropWidth) / scale; height = dmtxImageGetProp(img, DmtxPropHeight) / scale; dec->edgeMin = DmtxUndefined; dec->edgeMax = DmtxUndefined; dec->scanGap = 1; dec->squareDevn = cos(50 * (M_PI/180)); dec->sizeIdxExpected = DmtxSymbolShapeAuto; dec->edgeThresh = 10; dec->xMin = 0; dec->xMax = width - 1; dec->yMin = 0; dec->yMax = height - 1; dec->scale = scale; dec->cache = (unsigned char *)calloc(width * height, sizeof(unsigned char)); if(dec->cache == NULL) { free(dec); return NULL; } dec->image = img; dec->grid = InitScanGrid(dec); return dec; }