Advertisement
Guest User

Untitled

a guest
May 23rd, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.33 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <getopt.h>
  4. #include <string.h>
  5. #include <time.h>
  6.  
  7. #include <dirent.h>
  8. #include <sys/stat.h>
  9. #include <sys/types.h>
  10.  
  11. //
  12. // LEADTOOLS Includes
  13. //
  14. #include "l_bitmap.h"
  15. #include "ltbar.h"
  16.  
  17. //
  18. // Application Options
  19. //
  20.  
  21. struct option long_options[] =
  22. {
  23. {"file", required_argument, 0, 'f' },
  24. {"write", optional_argument, 0, 'w' }
  25. };
  26.  
  27. static void print_usage()
  28. {
  29. printf("Usage: barcode -f filename [-w barcodedata]\nNote: use barcodedata to write EAN-13 barcode\n");
  30. }
  31.  
  32. static void ReadBarcodes(pBITMAPHANDLE bitmap);
  33. static void WriteBarcode(const char *filename, const char *data, L_UINT32 barcodeType);
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43. int main(int argc, char *argv[])
  44. {
  45. int opt;
  46. int optIndex = 0;
  47. char *filename = "";
  48. int ret = SUCCESS;
  49. int write = 0;
  50. char *data = NULL;
  51. UNLOCKSUPPORT();
  52. ISEVALEXPIRED(ret);
  53.  
  54. if(ret)
  55. {
  56. printf("\nEvaluation expired. Application will exit.\n");
  57. return EXIT_FAILURE;
  58. }
  59. /*
  60. while((opt = getopt_long(argc,argv,"f:w:",long_options,&optIndex))!=-1)
  61. {
  62. switch(opt)
  63. {
  64. case 'f':
  65. filename = optarg;
  66. break;
  67. case 'w':
  68. write = 1;
  69. data = optarg;
  70. break;
  71. }
  72. }
  73.  
  74. if(strlen(filename)==0)
  75. {
  76. print_usage();
  77. exit(EXIT_FAILURE);
  78. }
  79. */
  80.  
  81.  
  82. struct dirent *dp;
  83. DIR *dfd;
  84.  
  85. char *dir ;
  86. dir = argv[1] ;
  87.  
  88. if ( argc == 1 )
  89. {
  90. printf("Usage: %s dirname\n",argv[0]);
  91. return 0;
  92. }
  93.  
  94. if ((dfd = opendir(dir)) == NULL)
  95. {
  96. fprintf(stderr, "Can't open %s\n", dir);
  97. return 0;
  98. }
  99.  
  100. char filename_qfd[100] ;
  101.  
  102.  
  103. while ((dp = readdir(dfd)) != NULL)
  104. {
  105. struct stat stbuf ;
  106. sprintf( filename_qfd , "%s/%s",dir,dp->d_name) ;
  107. if( stat(filename_qfd,&stbuf ) == -1 )
  108. {
  109. printf("Unable to stat file: %s\n",filename_qfd) ;
  110. continue ;
  111. }
  112.  
  113. if ( ( stbuf.st_mode & S_IFMT ) == S_IFDIR )
  114. {
  115. continue;
  116. // Skip directories
  117. }
  118. printf("%s\n", filename_qfd);
  119.  
  120. clock_t start = clock(), diff;
  121.  
  122.  
  123. if(!write)
  124. {
  125. //
  126. // Load Barcode Image
  127. //
  128. BITMAPHANDLE bitmap = { 0 };
  129. memset(&bitmap,0,sizeof(BITMAPHANDLE));
  130. ret = L_LoadFile(filename_qfd,&bitmap,sizeof(BITMAPHANDLE),0,ORDER_BGR, LOADFILE_ALLOCATE | LOADFILE_STORE, NULL,NULL,NULL,NULL);
  131. if(ret!=SUCCESS)
  132. {
  133. printf("\nError loading %s: %d\n", filename_qfd, ret);
  134. exit(EXIT_FAILURE);
  135. }
  136. ReadBarcodes(&bitmap);
  137.  
  138. L_FreeBitmap(&bitmap);
  139. }
  140. else
  141. {
  142. if(strlen(data)==0)
  143. {
  144. print_usage();
  145. exit(EXIT_FAILURE);
  146. }
  147. WriteBarcode(filename_qfd, data, BARCODE_1D_EAN_13);
  148. }
  149. diff = clock() - start;
  150. int msec = diff * 1000 / CLOCKS_PER_SEC;
  151. printf("Time taken %d seconds %d milliseconds\n", msec/1000, msec%1000);
  152.  
  153.  
  154.  
  155.  
  156.  
  157. }
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168. return EXIT_SUCCESS;
  169. }
  170.  
  171. static void GetBarTypeStr(L_UINT32 barType, L_TCHAR * barStr)
  172. {
  173. switch (barType)
  174. {
  175. case BARCODE_1D_EAN_13: sprintf(barStr, TEXT("EAN 13")); break;
  176. case BARCODE_1D_EAN_8: sprintf(barStr, TEXT("EAN 8")); break;
  177. case BARCODE_1D_UPC_A: sprintf(barStr, TEXT("UPC A")); break;
  178. case BARCODE_1D_UPC_E: sprintf(barStr, TEXT("UPC E")); break;
  179. case BARCODE_1D_CODE_3_OF_9: sprintf(barStr, TEXT("Code 3 of 9")); break;
  180. case BARCODE_1D_CODE_128: sprintf(barStr, TEXT("Code 128")); break;
  181. case BARCODE_1D_CODE_I2_OF_5: sprintf(barStr, TEXT("Interleaved 2 of 5")); break;
  182. case BARCODE_1D_CODA_BAR: sprintf(barStr, TEXT("CODABAR")); break;
  183. case BARCODE_1D_UCCEAN_128: sprintf(barStr, TEXT("UCCEAN 128")); break;
  184. case BARCODE_1D_CODE_93: sprintf(barStr, TEXT("Code 93")); break;
  185. case BARCODE_1D_EANEXT_5: sprintf(barStr, TEXT("EAN EXT5")); break;
  186. case BARCODE_1D_EANEXT_2: sprintf(barStr, TEXT("EAN EXT2")); break;
  187. case BARCODE_1D_MSI: sprintf(barStr, TEXT("MSI")); break;
  188. case BARCODE_1D_CODE11: sprintf(barStr, TEXT("Code11")); break;
  189. case BARCODE_1D_CODE_S25: sprintf(barStr, TEXT("Standard 2 of 5")); break;
  190. case BARCODE_1D_RSS14: sprintf(barStr, TEXT("RSS 14")); break;
  191. case BARCODE_1D_RSS14_LIMITED: sprintf(barStr, TEXT("RSS 14 Limited")); break;
  192. case BARCODE_1D_RSS14_EXPANDED: sprintf(barStr, TEXT("RSS 14 Expanded")); break;
  193. case BARCODE_1D_RSS14_STACKED: sprintf(barStr, TEXT("RSS 14 Stacked")); break;
  194. case BARCODE_1D_RSS14_EXP_STACKED: sprintf(barStr, TEXT("RSS 14 Expanded Stacked")); break;
  195. case BARCODE_1D_PATCH_CODE: sprintf(barStr, TEXT("Patch Code")); break;
  196. case BARCODE_1D_POST_NET: sprintf(barStr, TEXT("Postnet")); break;
  197. case BARCODE_1D_PLANET: sprintf(barStr, TEXT("Planet")); break;
  198. case BARCODE_1D_AUST_POST: sprintf(barStr, TEXT("Aust. Post")); break;
  199. case BARCODE_1D_RM4SCC: sprintf(barStr, TEXT("RM4SCC")); break;
  200. case BARCODE_1D_USPS4BC: sprintf(barStr, TEXT("USPS-4CB")); break;
  201. case BARCODE_PDF417: sprintf(barStr, TEXT("PDF417")); break;
  202. case BARCODE_MICRO_PDF417: sprintf(barStr, TEXT("MicroPDF417")); break;
  203. case BARCODE_DM_DEF: sprintf(barStr, TEXT("DM Default")); break;
  204. case BARCODE_DM_10x10: sprintf(barStr, TEXT("DM 10x10")); break;
  205. case BARCODE_DM_12x12: sprintf(barStr, TEXT("DM 12x12")); break;
  206. case BARCODE_DM_14x14: sprintf(barStr, TEXT("DM 14x14")); break;
  207. case BARCODE_DM_16x16: sprintf(barStr, TEXT("DM 16x16")); break;
  208. case BARCODE_DM_18x18: sprintf(barStr, TEXT("DM 18x18")); break;
  209. case BARCODE_DM_20x20: sprintf(barStr, TEXT("DM 20x20")); break;
  210. case BARCODE_DM_22x22: sprintf(barStr, TEXT("DM 22x22")); break;
  211. case BARCODE_DM_24x24: sprintf(barStr, TEXT("DM 24x24")); break;
  212. case BARCODE_DM_26x26: sprintf(barStr, TEXT("DM 26x26")); break;
  213. case BARCODE_DM_32x32: sprintf(barStr, TEXT("DM 32x32")); break;
  214. case BARCODE_DM_36x36: sprintf(barStr, TEXT("DM 36x36")); break;
  215. case BARCODE_DM_40x40: sprintf(barStr, TEXT("DM 40x40")); break;
  216. case BARCODE_DM_44x44: sprintf(barStr, TEXT("DM 44x44")); break;
  217. case BARCODE_DM_48x48: sprintf(barStr, TEXT("DM 48x48")); break;
  218. case BARCODE_DM_52x52: sprintf(barStr, TEXT("DM 52x52")); break;
  219. case BARCODE_DM_64x64: sprintf(barStr, TEXT("DM 64x64")); break;
  220. case BARCODE_DM_72x72: sprintf(barStr, TEXT("DM 72x72")); break;
  221. case BARCODE_DM_80x80: sprintf(barStr, TEXT("DM 80x80")); break;
  222. case BARCODE_DM_88x88: sprintf(barStr, TEXT("DM 88x88")); break;
  223. case BARCODE_DM_96x96: sprintf(barStr, TEXT("DM 96x96")); break;
  224. case BARCODE_DM_104x104: sprintf(barStr, TEXT("DM 10x104")); break;
  225. case BARCODE_DM_120x120: sprintf(barStr, TEXT("DM 120x120")); break;
  226. case BARCODE_DM_132x132: sprintf(barStr, TEXT("DM 132x132")); break;
  227. case BARCODE_DM_144x144: sprintf(barStr, TEXT("DM 144x144")); break;
  228. case BARCODE_DM_8x18: sprintf(barStr, TEXT("DM 8x18")); break;
  229. case BARCODE_DM_8x32: sprintf(barStr, TEXT("DM 8x32")); break;
  230. case BARCODE_DM_12x26: sprintf(barStr, TEXT("DM 12x26")); break;
  231. case BARCODE_DM_12x36: sprintf(barStr, TEXT("DM 12x36")); break;
  232. case BARCODE_DM_16x36: sprintf(barStr, TEXT("DM 16x36")); break;
  233. case BARCODE_DM_16x48: sprintf(barStr, TEXT("DM 48x48")); break;
  234. case BARCODE_DM_WRITE_RECTANGLE: sprintf(barStr, TEXT("DM Default Rect")); break;
  235. case BARCODE_QR_DEF: sprintf(barStr, TEXT("QR DEF")); break;
  236. case BARCODE_QR_M2_1: sprintf(barStr, TEXT("QR M2 1")); break;
  237. case BARCODE_QR_M2_2: sprintf(barStr, TEXT("QR M2 2")); break;
  238. case BARCODE_QR_M2_3: sprintf(barStr, TEXT("QR M2 3")); break;
  239. case BARCODE_QR_M2_4: sprintf(barStr, TEXT("QR M2 4")); break;
  240. case BARCODE_QR_M2_5: sprintf(barStr, TEXT("QR M2 5")); break;
  241. case BARCODE_QR_M2_6: sprintf(barStr, TEXT("QR M2 6")); break;
  242. case BARCODE_QR_M2_7: sprintf(barStr, TEXT("QR M2 7")); break;
  243. case BARCODE_QR_M2_8: sprintf(barStr, TEXT("QR M2 8")); break;
  244. case BARCODE_QR_M2_9: sprintf(barStr, TEXT("QR M2 9")); break;
  245. case BARCODE_QR_M2_10: sprintf(barStr, TEXT("QR M2 10")); break;
  246. case BARCODE_QR_M2_11: sprintf(barStr, TEXT("QR M2 11")); break;
  247. case BARCODE_QR_M2_12: sprintf(barStr, TEXT("QR M2 12")); break;
  248. case BARCODE_QR_M2_13: sprintf(barStr, TEXT("QR M2 13")); break;
  249. case BARCODE_QR_M2_14: sprintf(barStr, TEXT("QR M2 14")); break;
  250. case BARCODE_QR_M2_15: sprintf(barStr, TEXT("QR M2 15")); break;
  251. case BARCODE_QR_M2_16: sprintf(barStr, TEXT("QR M2 16")); break;
  252. case BARCODE_QR_M2_17: sprintf(barStr, TEXT("QR M2 17")); break;
  253. case BARCODE_QR_M2_18: sprintf(barStr, TEXT("QR M2 18")); break;
  254. case BARCODE_QR_M2_19: sprintf(barStr, TEXT("QR M2 19")); break;
  255. case BARCODE_QR_M2_20: sprintf(barStr, TEXT("QR M2 20")); break;
  256. case BARCODE_QR_M2_21: sprintf(barStr, TEXT("QR M2 21")); break;
  257. case BARCODE_QR_M2_22: sprintf(barStr, TEXT("QR M2 22")); break;
  258. case BARCODE_QR_M2_23: sprintf(barStr, TEXT("QR M2 23")); break;
  259. case BARCODE_QR_M2_24: sprintf(barStr, TEXT("QR M2 24")); break;
  260. case BARCODE_QR_M2_25: sprintf(barStr, TEXT("QR M2 25")); break;
  261. case BARCODE_QR_M2_26: sprintf(barStr, TEXT("QR M2 26")); break;
  262. case BARCODE_QR_M2_27: sprintf(barStr, TEXT("QR M2 27")); break;
  263. case BARCODE_QR_M2_28: sprintf(barStr, TEXT("QR M2 28")); break;
  264. case BARCODE_QR_M2_29: sprintf(barStr, TEXT("QR M2 29")); break;
  265. case BARCODE_QR_M2_30: sprintf(barStr, TEXT("QR M2 30")); break;
  266. case BARCODE_QR_M2_31: sprintf(barStr, TEXT("QR M2 31")); break;
  267. case BARCODE_QR_M2_32: sprintf(barStr, TEXT("QR M2 32")); break;
  268. case BARCODE_QR_M2_33: sprintf(barStr, TEXT("QR M2 33")); break;
  269. case BARCODE_QR_M2_34: sprintf(barStr, TEXT("QR M2 34")); break;
  270. case BARCODE_QR_M2_35: sprintf(barStr, TEXT("QR M2 35")); break;
  271. case BARCODE_QR_M2_36: sprintf(barStr, TEXT("QR M2 36")); break;
  272. case BARCODE_QR_M2_37: sprintf(barStr, TEXT("QR M2 37")); break;
  273. case BARCODE_QR_M2_38: sprintf(barStr, TEXT("QR M2 38")); break;
  274. case BARCODE_QR_M2_39: sprintf(barStr, TEXT("QR M2 39")); break;
  275. case BARCODE_QR_M2_40: sprintf(barStr, TEXT("QR M2 40")); break;
  276. case BARCODE_QR_M1_1: sprintf(barStr, TEXT("QR M1 1")); break;
  277. case BARCODE_QR_M1_2: sprintf(barStr, TEXT("QR M1 2")); break;
  278. case BARCODE_QR_M1_3: sprintf(barStr, TEXT("QR M1 3")); break;
  279. case BARCODE_QR_M1_4: sprintf(barStr, TEXT("QR M1 4")); break;
  280. case BARCODE_QR_M1_5: sprintf(barStr, TEXT("QR M1 5")); break;
  281. case BARCODE_QR_M1_6: sprintf(barStr, TEXT("QR M1 6")); break;
  282. case BARCODE_QR_M1_7: sprintf(barStr, TEXT("QR M1 7")); break;
  283. case BARCODE_QR_M1_8: sprintf(barStr, TEXT("QR M1 8")); break;
  284. case BARCODE_QR_M1_9: sprintf(barStr, TEXT("QR M1 9")); break;
  285. case BARCODE_QR_M1_10: sprintf(barStr, TEXT("QR M1 10")); break;
  286. case BARCODE_QR_M1_11: sprintf(barStr, TEXT("QR M1 11")); break;
  287. case BARCODE_QR_M1_12: sprintf(barStr, TEXT("QR M1 12")); break;
  288. case BARCODE_QR_M1_13: sprintf(barStr, TEXT("QR M1 13")); break;
  289. case BARCODE_QR_M1_14: sprintf(barStr, TEXT("QR M1 14")); break;
  290.  
  291. #if defined(LEADTOOLS_V19_OR_LATER)
  292. case BARCODE_AZTEC_CODE: sprintf(barStr, TEXT("AZTEC CODE")); break;
  293. case BARCODE_AZTEC_CODE_Compact1: sprintf(barStr, TEXT("AZTEC CODE Compact1")); break;
  294. case BARCODE_AZTEC_CODE_Compact2: sprintf(barStr, TEXT("AZTEC CODE Compact2")); break;
  295. case BARCODE_AZTEC_CODE_Compact3: sprintf(barStr, TEXT("AZTEC CODE Compact3")); break;
  296. case BARCODE_AZTEC_CODE_Compact4: sprintf(barStr, TEXT("AZTEC CODE Compact4")); break;
  297. case BARCODE_AZTEC_CODE_Full1: sprintf(barStr, TEXT("AZTEC CODE Full1")); break;
  298. case BARCODE_AZTEC_CODE_Full2: sprintf(barStr, TEXT("AZTEC CODE Full2")); break;
  299. case BARCODE_AZTEC_CODE_Full3: sprintf(barStr, TEXT("AZTEC CODE Full3")); break;
  300. case BARCODE_AZTEC_CODE_Full4: sprintf(barStr, TEXT("AZTEC CODE Full4")); break;
  301. case BARCODE_AZTEC_CODE_Full5: sprintf(barStr, TEXT("AZTEC CODE Full5")); break;
  302. case BARCODE_AZTEC_CODE_Full6: sprintf(barStr, TEXT("AZTEC CODE Full6")); break;
  303. case BARCODE_AZTEC_CODE_Full7: sprintf(barStr, TEXT("AZTEC CODE Full7")); break;
  304. case BARCODE_AZTEC_CODE_Full8: sprintf(barStr, TEXT("AZTEC CODE Full8")); break;
  305. case BARCODE_AZTEC_CODE_Full9: sprintf(barStr, TEXT("AZTEC CODE Full9")); break;
  306. case BARCODE_AZTEC_CODE_Full10: sprintf(barStr, TEXT("AZTEC CODE Full10")); break;
  307. case BARCODE_AZTEC_CODE_Full11: sprintf(barStr, TEXT("AZTEC CODE Full11")); break;
  308. case BARCODE_AZTEC_CODE_Full12: sprintf(barStr, TEXT("AZTEC CODE Full12")); break;
  309. case BARCODE_AZTEC_CODE_Full13: sprintf(barStr, TEXT("AZTEC CODE Full13")); break;
  310. case BARCODE_AZTEC_CODE_Full14: sprintf(barStr, TEXT("AZTEC CODE Full14")); break;
  311. case BARCODE_AZTEC_CODE_Full15: sprintf(barStr, TEXT("AZTEC CODE Full15")); break;
  312. case BARCODE_AZTEC_CODE_Full16: sprintf(barStr, TEXT("AZTEC CODE Full16")); break;
  313. case BARCODE_AZTEC_CODE_Full17: sprintf(barStr, TEXT("AZTEC CODE Full17")); break;
  314. case BARCODE_AZTEC_CODE_Full18: sprintf(barStr, TEXT("AZTEC CODE Full18")); break;
  315. case BARCODE_AZTEC_CODE_Full19: sprintf(barStr, TEXT("AZTEC CODE Full19")); break;
  316. case BARCODE_AZTEC_CODE_Full20: sprintf(barStr, TEXT("AZTEC CODE Full20")); break;
  317. case BARCODE_AZTEC_CODE_Full21: sprintf(barStr, TEXT("AZTEC CODE Full21")); break;
  318. case BARCODE_AZTEC_CODE_Full22: sprintf(barStr, TEXT("AZTEC CODE Full22")); break;
  319. case BARCODE_AZTEC_CODE_Full23: sprintf(barStr, TEXT("AZTEC CODE Full23")); break;
  320. case BARCODE_AZTEC_CODE_Full24: sprintf(barStr, TEXT("AZTEC CODE Full24")); break;
  321. case BARCODE_AZTEC_CODE_Full25: sprintf(barStr, TEXT("AZTEC CODE Full25")); break;
  322. case BARCODE_AZTEC_CODE_Full26: sprintf(barStr, TEXT("AZTEC CODE Full26")); break;
  323. case BARCODE_AZTEC_CODE_Full27: sprintf(barStr, TEXT("AZTEC CODE Full27")); break;
  324. case BARCODE_AZTEC_CODE_Full28: sprintf(barStr, TEXT("AZTEC CODE Full28")); break;
  325. case BARCODE_AZTEC_CODE_Full29: sprintf(barStr, TEXT("AZTEC CODE Full29")); break;
  326. case BARCODE_AZTEC_CODE_Full30: sprintf(barStr, TEXT("AZTEC CODE Full30")); break;
  327. case BARCODE_AZTEC_CODE_Full31: sprintf(barStr, TEXT("AZTEC CODE Full31")); break;
  328. case BARCODE_AZTEC_CODE_Full32: sprintf(barStr, TEXT("AZTEC CODE Full32")); break;
  329.  
  330. case BARCODE_MAXI_CODE: sprintf(barStr, TEXT("MAXI CODE")); break;
  331. case BARCODE_MAXI_CODE_MODE_2: sprintf(barStr, TEXT("MAXI CODE MODE 2")); break;
  332. case BARCODE_MAXI_CODE_MODE_3: sprintf(barStr, TEXT("MAXI CODE MODE 3")); break;
  333. case BARCODE_MAXI_CODE_MODE_4: sprintf(barStr, TEXT("MAXI CODE MODE 4")); break;
  334. case BARCODE_MAXI_CODE_MODE_5: sprintf(barStr, TEXT("MAXI CODE MODE 5")); break;
  335.  
  336. case BARCODE_MICRO_QR_CODE: sprintf(barStr, TEXT("MICRO QR CODE")); break;
  337. case BARCODE_MICRO_QR_CODE_M1: sprintf(barStr, TEXT("MICRO QR CODE M1")); break;
  338. case BARCODE_MICRO_QR_CODE_M2_L: sprintf(barStr, TEXT("MICRO QR CODE M2 L")); break;
  339. case BARCODE_MICRO_QR_CODE_M2_M: sprintf(barStr, TEXT("MICRO QR CODE M2 M")); break;
  340. case BARCODE_MICRO_QR_CODE_M3_L: sprintf(barStr, TEXT("MICRO QR CODE M3 L")); break;
  341. case BARCODE_MICRO_QR_CODE_M3_M: sprintf(barStr, TEXT("MICRO QR CODE M3 M")); break;
  342. case BARCODE_MICRO_QR_CODE_M4_L: sprintf(barStr, TEXT("MICRO QR CODE M4 L")); break;
  343. case BARCODE_MICRO_QR_CODE_M4_M: sprintf(barStr, TEXT("MICRO QR CODE M4 M")); break;
  344. case BARCODE_MICRO_QR_CODE_M4_Q: sprintf(barStr, TEXT("MICRO QR CODE M4 Q")); break;
  345. #endif // #if defined(LEADTOOLS_V19_OR_LATER)
  346. case BARCODE_QR_M1_DEF: sprintf(barStr, TEXT("QR M1 DEF")); break;
  347. }
  348. }
  349.  
  350. static void Read(pBITMAPHANDLE bitmap, L_UINT32 type, char *description)
  351. {
  352. int ret = SUCCESS;
  353. pBARCODEDATA barcodes = NULL;
  354.  
  355. BARCODE1D barcode_1d_settings = {
  356. sizeof(BARCODE1D),
  357. 0,
  358. (BARCODE_DIR_SKEW | BARCODE_DIR_HORIZONTAL | BARCODE_DIR_VERTICAL | BARCODE_DIR_DIAGONAL),
  359. 0,
  360. 9,
  361. 10,
  362. 15,
  363. 2,
  364. BARCODE_1D_NORMAL,
  365. 0,
  366. 10
  367. };
  368. pBARCODE1D barcode_1d_settings_ptr = &barcode_1d_settings;
  369. /*
  370. barcode_1d_settings->uStructSize = sizeof(pBARCODEDATA);
  371. barcode_1d_settings->bOutShowText = 0; // for writing only
  372. barcode_1d_settings->nDirection = BARCODE_DIR_SKEW | BARCODE_DIR_HORIZONTAL | BARCODE_DIR_VERTICAL | BARCODE_DIR_DIAGONAL; // for reading only
  373. barcode_1d_settings->bErrorCheck = 0;
  374. barcode_1d_settings->nGranularity = 9;
  375. barcode_1d_settings->nMinLength = 10;
  376. barcode_1d_settings->nMaxLength = 15;
  377. barcode_1d_settings->nWhiteLines = 2;
  378. barcode_1d_settings->uStd1DFlags = BARCODE_1D_NORMAL;
  379. barcode_1d_settings->uAdvancedFlags = 0;
  380. barcode_1d_settings->nXModule = 10;
  381. */
  382.  
  383. ret = L_BarCodeRead(
  384. bitmap,
  385. NULL,
  386. type,
  387. BARCODE_SCANLINES_PER_PIXELS,
  388. 0,
  389. 0,
  390. barcode_1d_settings_ptr,
  391. NULL,
  392. NULL,
  393. &barcodes,
  394. sizeof(BARCODEDATA));
  395. if(ret == SUCCESS)
  396. {
  397. int count = barcodes->nTotalCount;
  398. int i = 0;
  399.  
  400. printf("\nTotal %s barcode symbols found is: %d", description, count);
  401. for(i=0;i<count;i++)
  402. {
  403. char type[40];
  404.  
  405. GetBarTypeStr(barcodes[i].ulType, type);
  406. printf("\nBarcode # %d [%s]\n\tData %s\n\tLeft %d\n\tTop %d\n\tRight %d\n\tBottom %d\n",
  407. i+1, type, barcodes[i].pszBarCodeData,
  408. barcodes[i].rcBarLocation.left,
  409. barcodes[i].rcBarLocation.top,
  410. barcodes[i].rcBarLocation.right,
  411. barcodes[i].rcBarLocation.bottom);
  412. }
  413.  
  414. L_BarCodeFree(&barcodes);
  415. }
  416. else if(ret == ERROR_BARCODE_NOTFOUND)
  417. printf("\nNo %s barcodes found\n", description);
  418. else
  419. printf("\nError L_BarCodeRead (%d) search for %s barcodes\n", ret, description);
  420. }
  421.  
  422. static void ReadBarcodes(pBITMAPHANDLE bitmap)
  423. {
  424. int ret;
  425.  
  426. ret = L_BarCodeInit(BARCODES_1D);
  427. if(ret!=SUCCESS)
  428. {
  429. printf("\nError L_BarCodeInit: %d\n", ret);
  430. return;
  431. }
  432.  
  433.  
  434.  
  435.  
  436. Read(bitmap, BARCODE_1D_READ_ANYTYPE, "Linear");
  437.  
  438. L_BarCodeExit();
  439. }
  440.  
  441. static void WriteBarcode(const char *filename, const char *dataString, L_UINT32 barcodeType)
  442. {
  443. BITMAPHANDLE barcodeBitmap = { 0 };
  444. int ret;
  445. BARCODEDATA data;
  446. BARCODE1D bar1d;
  447.  
  448. ret = L_CreateBitmap(&barcodeBitmap, sizeof(BITMAPHANDLE), TYPE_CONV, 2550,3300, 1, ORDER_BGR, NULL, TOP_LEFT, NULL,0);
  449. if(ret!=SUCCESS)
  450. {
  451. printf("\nError L_CreateBitmap: %d\n", ret);
  452. return;
  453. }
  454.  
  455. ret = L_BarCodeInit(BARCODES_1D);
  456. if(ret!=SUCCESS)
  457. {
  458. L_FreeBitmap(&barcodeBitmap);
  459. printf("\nError L_BarCodeInit: %d\n", ret);
  460. return;
  461. }
  462.  
  463. L_FillBitmap(&barcodeBitmap, RGB(255,255,155));
  464. memset(&data,0,sizeof(BARCODEDATA));
  465. memset(&bar1d,0,sizeof(BARCODE1D));
  466.  
  467. data.uStructSize = sizeof(BARCODEDATA);
  468. data.rcBarLocation.left = 281;
  469. data.rcBarLocation.top = 413;
  470. data.rcBarLocation.right = 1326;
  471. data.rcBarLocation.bottom = 1023;
  472. data.nUnits = BARCODE_SCANLINES_PER_PIXELS;
  473. data.ulType = barcodeType;
  474. data.pszBarCodeData = (L_CHAR*)dataString;
  475. data.nSizeofBarCodeData = (L_INT)strlen(dataString);
  476.  
  477. bar1d.uStructSize = sizeof(BARCODE1D);
  478. bar1d.bErrorCheck = 1;
  479. bar1d.bOutShowText = 1;
  480. #if defined(LEADTOOLS_V19_OR_LATER)
  481. ret = L_BarCodeWrite(&barcodeBitmap, &data, NULL, BARCODE_USECOLORS, &bar1d, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
  482. #else
  483. ret = L_BarCodeWrite(&barcodeBitmap, &data, NULL, BARCODE_USECOLORS, &bar1d, NULL, NULL, NULL, NULL);
  484. #endif // #if defined(LEADTOOLS_V19_OR_LATER)
  485.  
  486. if(ret==SUCCESS)
  487. {
  488. ret = L_SaveBitmap((L_TCHAR*)filename, &barcodeBitmap, FILE_CCITT_GROUP4, 1, 0, NULL);
  489. if(ret!=SUCCESS)
  490. printf("\nError L_SaveBitmap: %d", ret);
  491. }
  492. else
  493. printf("\nError L_BarCodeWrite: %d", ret);
  494.  
  495. L_FreeBitmap(&barcodeBitmap);
  496.  
  497. L_BarCodeExit();
  498. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement