From c3f01ec3f47a7212f938a1238d0c480e07e1e892 Mon Sep 17 00:00:00 2001 From: wupingyuan Date: Fri, 19 May 2023 16:09:19 +0800 Subject: [PATCH] add zbar Signed-off-by: wupingyuan --- thirdparty/zbar/HPKBUILD | 88 ++++++++++++++++++ thirdparty/zbar/README.OpenSource | 11 +++ thirdparty/zbar/README_zh.md | 12 +++ thirdparty/zbar/SHA512SUM | 2 + thirdparty/zbar/docs/hap_integrate.md | 86 +++++++++++++++++ thirdparty/zbar/docs/pic/zbar_install_dir.jpg | Bin 0 -> 14480 bytes thirdparty/zbar/docs/pic/zbar_test.jpg | Bin 0 -> 13821 bytes thirdparty/zbar/docs/pic/zbar_usage.jpg | Bin 0 -> 25775 bytes thirdparty/zbar/zbar_oh_pkg.patch | 12 +++ 9 files changed, 211 insertions(+) create mode 100644 thirdparty/zbar/HPKBUILD create mode 100644 thirdparty/zbar/README.OpenSource create mode 100644 thirdparty/zbar/README_zh.md create mode 100644 thirdparty/zbar/SHA512SUM create mode 100644 thirdparty/zbar/docs/hap_integrate.md create mode 100644 thirdparty/zbar/docs/pic/zbar_install_dir.jpg create mode 100644 thirdparty/zbar/docs/pic/zbar_test.jpg create mode 100644 thirdparty/zbar/docs/pic/zbar_usage.jpg create mode 100644 thirdparty/zbar/zbar_oh_pkg.patch diff --git a/thirdparty/zbar/HPKBUILD b/thirdparty/zbar/HPKBUILD new file mode 100644 index 00000000..0d7e698d --- /dev/null +++ b/thirdparty/zbar/HPKBUILD @@ -0,0 +1,88 @@ +# Maintainer: wupingyuan +pkgname=zbar +pkgver=0.10 +pkgrel=0 +pkgdesc="ZBar is an open source software suite for reading bar codes from various sources, such as video streams, image files and raw intensity sensors. It supports many popular symbologies (types of bar codes) including EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 39, Interleaved 2 of 5 and QR Code." +url="https://zbar.sourceforge.net/" +archs=("armeabi-v7a" "arm64-v8a") +license=("LGPL2.1") +depends=("libpng") +makedepends=() +source="https://sourceforge.net/projects/$pkgname/files/$pkgname/$pkgver/$pkgname-$pkgver.tar.gz" + +autounpack=true +downloadpackage=true +patchflag=true +buildtools="configure" +builddir=$pkgname-$pkgver +packagename=$builddir.tar.gz +source envset.sh +host= + +prepare() { + if $patchflag + then + cd $builddir + # 由于版本问题,原库依赖的libpng库比较老,而当前lycium仓库中libpng比较新,因此需要更换接口:png_set_gray_1_2_4_to_8->png_set_expand_gray_1_2_4_to_8 + patch -p1 < `pwd`/../zbar_oh_pkg.patch + patchflag=false + cd $OLDPWD + fi + cp -rf $builddir $pkgname-$ARCH-build + if [ $ARCH == "armeabi-v7a" ] + then + setarm32ENV + fi + if [ $ARCH == "arm64-v8a" ] + then + setarm64ENV + fi + host=arm-linux +} + +build() { + cd $pkgname-$ARCH-build + ./configure "$@" --host=$host --disable-video --without-imagemagick --without-gtk --without-python --without-qt >> `pwd`/build.log 2>&1 + make -j4 >> `pwd`/build.log 2>&1 + ret=$? + cd $OLDPWD + return $ret +} + +package() { + cd $pkgname-$ARCH-build + make install >> `pwd`/build.log 2>&1 + ret=$? + cd $OLDPWD + unset host + return $ret +} + +check() { + cd $pkgname-$ARCH-build + sed '$ascan_image: examples/scan_image.c' Makefile > temp_Makefile + mv temp_Makefile Makefile + sed '$a\\t$(CC) $(CFLAGS) examples/scan_image.c -o scan_image -lm -Iinclude/ -Lzbar/.libs -lzbar -L$(PNG_LIBS_DIR) -I$(PNG_INCLUDE_DIR) -lpng -lz' Makefile > temp_Makefile + mv temp_Makefile Makefile + make scan_image PNG_LIBS_DIR=$LYCIUM_ROOT/usr/libpng/$ARCH/lib PNG_INCLUDE_DIR=$LYCIUM_ROOT/usr/libpng/$ARCH/include >> `pwd`/build.log 2>&1 + ret=$? + cd $OLDPWD + if [ $ARCH == "armeabi-v7a" ] + then + unsetarm32ENV + fi + if [ $ARCH == "arm64-v8a" ] + then + unsetarm64ENV + fi + echo "The test must be on an OpenHarmony device!" + # 解析二维码 + # ./scan_image qrcode.png + # 解析条形码 + # ./scan_image barcode.png + return $ret +} + +cleanbuild(){ + rm -rf ${PWD}/$builddir $builddir-armeabi-v7a-build $builddir-arm64-v8a-build #${PWD}/$packageName +} diff --git a/thirdparty/zbar/README.OpenSource b/thirdparty/zbar/README.OpenSource new file mode 100644 index 00000000..1927a2ad --- /dev/null +++ b/thirdparty/zbar/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name": "zbar", + "License": "LGPL2.1", + "License File": "COPYING", + "Version Number": "0.10", + "Owner": "wupingyuan@huawei.com", + "Upstream URL": "https://sourceforge.net/projects/zbar/files/zbar/0.10/zbar-0.10.tar.gz", + "Description": "ZBar is an open source software suite for reading bar codes from various sources, such as video streams, image files and raw intensity sensors. It supports many popular symbologies (types of bar codes) including EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 39, Interleaved 2 of 5 and QR Code." + } +] diff --git a/thirdparty/zbar/README_zh.md b/thirdparty/zbar/README_zh.md new file mode 100644 index 00000000..b0fa86f9 --- /dev/null +++ b/thirdparty/zbar/README_zh.md @@ -0,0 +1,12 @@ +# zbar三方库说明 +## 功能简介 +zbar是一个条形码和二维码解析的库。 +## 使用约束 +- IDE版本:DevEco Studio 3.1 Beta2 +- SDK版本:ohos_sdk_public 3.2.11.9 (API Version 9 Release) +- 三方库版本:0.10 +- 当前适配的功能:支持条形码和二维码解析 +- [LGPL2.1](https://zbar.sourceforge.net/) + +## 集成方式 ++ [应用hap包集成](docs/hap_integrate.md) diff --git a/thirdparty/zbar/SHA512SUM b/thirdparty/zbar/SHA512SUM new file mode 100644 index 00000000..e2bcaf13 --- /dev/null +++ b/thirdparty/zbar/SHA512SUM @@ -0,0 +1,2 @@ +9cc6446dd97d4ec1b72db8aa4662dc976ff951f1ab99055f04f3c8da2b93a4e044740f31eb66683efdf031e5f3472a983ccfa81a6224db8b394f43ab6d4d1e76 zbar-0.10.tar.gz +1bfdff7c6acb55e0d0d18f28daed47fd352ad3260f8464944f6ffcd205ed9249723fdb65494875625016fe081544f655c1ac9e5cfe42021d5d8473ce32de7ad8 zbar_oh_pkg.patch diff --git a/thirdparty/zbar/docs/hap_integrate.md b/thirdparty/zbar/docs/hap_integrate.md new file mode 100644 index 00000000..95e80075 --- /dev/null +++ b/thirdparty/zbar/docs/hap_integrate.md @@ -0,0 +1,86 @@ +# zbar集成到应用hap +本库是在RK3568开发板上基于OpenHarmony3.2 Release版本的镜像验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 +## 开发环境 +- ubuntu20.04 +- [OpenHarmony3.2Release镜像](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fdayu200_standard_arm32.tar.gz) +- [ohos_sdk_public 3.2.11.9 (API Version 9 Release)](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fohos-sdk-windows_linux-public.tar.gz) +- [DevEco Studio 3.1 Beta2](https://gitee.com/link?target=https%3A%2F%2Fcontentcenter-vali-drcn.dbankcdn.cn%2Fpvt_2%2FDeveloperAlliance_package_901_9%2Ff3%2Fv3%2FuJyuq3syQ2ak4hE1QZmAug%2Fdevecostudio-windows-3.1.0.400.zip%3FHW-CC-KV%3DV1%26HW-CC-Date%3D20230408T013335Z%26HW-CC-Expire%3D315360000%26HW-CC-Sign%3D96262721EDC9B34E6F62E66884AB7AE2A94C2A7B8C28D6F7FC891F46EB211A70) +- [准备三方库构建环境](../../../tools/README.md#编译环境准备) +- [准备三方库测试环境](../../../tools/README.md#ci环境准备) +## 编译三方库 +- 下载本仓库 + ``` + git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1 + ``` +- 三方库目录结构 + ``` + tpc_c_cplusplus/thirdparty/zbar #三方库zbar的目录结构如下 + ├── docs #三方库相关文档的文件夹 + ├── HPKBUILD #构建脚本 + ├── SHA512SUM #三方库校验文件 + ├── zbar_oh_pkg.patch #补丁 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── README_zh.md + ``` + +- 将zbar、libpng拷贝至tools/main目录下 + ``` + cd tpc_c_cplusplus + cp thirdparty/zbar tools/main -rf + cp thirdparty/libpng tools/main -rf + ``` +- 在tools目录下编译三方库 + 编译环境的搭建参考[准备三方库构建环境](../../../tools/README.md#编译环境准备) + ``` + cd tools + ./build.sh libpng zbar + ``` +- 三方库头文件及生成的库 + 在tools目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库 + ``` + zbar/arm64-v8a zbar/armeabi-v7a + libpng/arm64-v8a libpng/armeabi-v7a + ``` + +- [测试三方库](#测试三方库) + +## 应用中使用三方库 + +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的库拷贝到该目录下,如下图所示 + ![thirdparty_install_dir](pic/zbar_install_dir.jpg) +- 在最外层(cpp目录下)CMakeLists.txt中添加如下语句 + ``` + #将三方库加入工程中 + target_link_libraries(entry PRIVATE ${CMAKE_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libzbar.so.0) + #将三方库的头文件加入工程中 + target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/zbar/${OHOS_ARCH}/include) + ``` + ![zbar_usage](pic/zbar_usage.jpg) +## 测试三方库 +三方库的测试使用原库自带的测试用例来做测试,[准备三方库测试环境](../../../tools/README.md#ci环境准备) + +- 将编译生成的scan_image可执行文件及条形码barcode.png、二维码qrcode.png准备好 + +- 将准备好的文件推送到开发板,在windows命令行进行如下操作 + + ``` + hdc_std shell mount -o remount,rw / #修改系统权限为可读写 + hdc_std file send scan_image /data #将可执行文件推入开发板data目录 + hdc_std file send barcode.png /data #将测试文件推入开发板data目录 + hdc_std file send qrcode.png /data #将测试文件推入开发板data目录 + hdc_std file send libc++_shared.so /system/lib64 + hdc_std file send libzbar.so.0 /system/lib64 + hdc_std file send libpng16.so.16 /system/lib64 + hdc_std shell #进入开发板 + chmod 777 scan_image #添加权限 + ./scan_image barcode.png #执行测试用例 + ./scan_image qrcode.png + ``` + + ![zbar_test](pic/zbar_test.jpg) + +## 参考资料 +- [润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld) +- [OpenHarmony三方库地址](https://gitee.com/openharmony-tpc) +- [OpenHarmony知识体系](https://gitee.com/openharmony-sig/knowledge) +- [通过DevEco Studio开发一个NAPI工程](https://gitee.com/openharmony-sig/knowledge_demo_temp/blob/master/docs/napi_study/docs/hello_napi.md) diff --git a/thirdparty/zbar/docs/pic/zbar_install_dir.jpg b/thirdparty/zbar/docs/pic/zbar_install_dir.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fd69c551c49a9b82068868a9a77aa8d352121489 GIT binary patch literal 14480 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

i+oB$MG*lNd?DLssT2wCf6)lV5 zx;?U|el8m?BR9Vj1$i+`poIUP>)0T0yBeYm6$`nx<}@$F)>fCI!2h|#j;gGl7?Dut zHHt|x1V>IFZZuNRQC{{fyUlT?K2z&+iMo5Y;gT&9%v+DWHf^h{d=OWiAoJ~w4`gg* zrWUvuTr#*6^l>=-?Ys%{z?LqZ7YTFDR+N~?bfyZ^shM1zPNQ--VFZ4>!~l#6h=;5Z zeqAm9|9&{fDTuTe?z%5^8v-cjl)heQ%B51d?JSei_9H8nNl0MY2ZlTB?0<1@PG)?e zD9phxa6}AqGM#pM1<+1(*w&Tl5319td<-MpvHK)8L+%%+|HRZ9e9hhT=c<$+6&{>e zxf8F1TRooNdmbFw0vDa`igxja1pmsG%tE!D>>Q|Mo~F)iYf3rAwS15E%b0noH_KE+ z-@$l-=dpuH*5sUibx-`9{cx7gd;2!ZgsdVF=t$k%gAc(*vntDh`QmjiIAT(poCCgo z_SK2z?`V0DyT!&3AfT1B21ZZC!0eg6+iJ%M*qYfq{P-xDc+RB*1pSDwp{uV z^0wMA9Mx$7m-Qz~+|NCfpD;tfYhb*r$@G7XDb*>mIVNlBx9_8NTE#v$CjP=rtXlbP zF*($hkh8C(N`uPoBTaD3N-SnqDB?U^+M;NH2;hq6NNW`pqH`8q53*vU28Wn$uqQQ| zsw@(zk;09uE4qRE9Ne-F5u#TGg=K2xXh!6Mo|4Y@1bxH8c2X|n))6fp`Cb8oC!VhW zeJDRM8K)wt`Xw`Q+_9GeML>4rvCr?I_8ZDbqij+CCGB+Zps+kc+Kf~B3ArMOflR(S()`BtX-eoi_YeRUE62!_E!>T95T+JyDEaZCzi;WCJz9_EE6)uZygnp z=Mm<_hnsZrep5W3vt-|Gc2d?NO%Nlajtx?$2s8o1B9GHH|0uQwy=g+Ov z*3SGQ8|Iw0Cya+iD&U$h)fH7?#va^oTo#f%hA@8aXNZRZ=8>V~}A>^S-2=0k#o$|K63u>ELvpu>J zsF7MFBIm`fkjHb0G=j3!f!klxaG&;G=1jh0h_X8T&1j5C5V*}z4xz=$k z>)fiDxm*4{8Z@8|p8;)GyfY zCWiANS{WWj954yu&RLXqzV_?SWV>^Pk8jF>Elf^TIookC?+P3+uz9+(TwS)(Mj%$$ zD{dWPA?CB@#_j&(ytr&Nskm4ohe(A~vpFWPa^3 zen}iW6fK?!aX6v@ye6}Cr#492YGW4V)GWV>5>tMJLrtimXfJZ;h#3zMu;(ZDN$S9d z#!EPw1=}s@NTzM7VLncvS-kK%2??aK;upXMV*+G|=XQ95@$Mk+rK5a|Kmtnc8jb#{ zINe%5t;I;qJ4AN05G*Wk#|v^O8UGbOl-a@GTl)T~Jn4J$`CMFE)<>clh`nC4n8c z5F8ix+sF(f&P;J!fWp5fFn=5Dsg(b}k)8^%JSrAoNDu+wY4*fX^emHoF9>Z+9wps{ zox8rgJ;8y}_q504I^7ey-bJJ1c*%tG!fkVcr4z91T)*?dg}nKtyH?RsX-?`3r zxUYR5>te8NA}?Lx@{86MxV<|g4DTi8x^c&8X;#}5ZRy-3?iZ9%Y<&DQRo7yfJoEEUQ5q{h z$7NrO&E`b|!JaVvItFX_CQHTY%f;sIr(96J1tH5P(9po1yn=$svscFup6}7aH40t1 zH)eNp%y+{qtKblT<#JTg1plqv7|?)u^yBYzUJfrB6;w zbj86S;N{^VB_5yQc#NWd*c`sV2RDP`a+8SO5RrXF5?T)z@T>f1VUgnB#G5lt@`yim zyyX4Msb?6kQjVYWTtZ0NG}&OS`-!Cz2tnGU?3kiz2+;yB;dF3EuK+mT!31dE>k)D3 z6|i5QHz0fgybFBkx}|tvD&0n5(Dg?1&H^{>uOV$r8|jEXoL>#?g-aRXYX&a#>asVs zl&&!RghP#utIhC332?ORdk6{6v*3Fo1`=~ra(}nk2+^Zw2*Vlqc6>2nh9oCR8tIj9 zyf?C6_OSM_B0PO=IwE&8R5=Hcthp=g^I$5=V)Ewx3h94DS0ubjAd71C|LMy;rk{_^ zmRUUV2DxQtsh?9xeiHw|n_DWOM|l1w>s?dYH76I?*pgSEtsF7+)=$~~F?$s=nM~Y` z3Gai}1C&c;=?lHShmH}PkdvHa1~6TbnMv3D;bdZ4mE}7q(l|B{Hcw1PQW@)HRQXtv zE~&;lRKd`#)=uQD**|QFY`xVQAj2>+Cc66}SJG)QK|-K_)j9z^bJS(qtio-WuA%t` zy!T?%VRQS`F?eIiutISBFq>ScWlsDfsocz(tfAPg!38Xe=gYPa+7;iGGB%2AcMUJ6q7K0EIi}OR|~g$95+iZLR!Bf|1B|9QMeB``Ny;+TAB7&|g${HuydnT{!h7n}tY4+sNSMO#8N?=!ID6rC{PI z>lJX~Tw~u*h%Ws=N}ikxGTAD({aO_;er;tmgQun<$BJezNuveuEknsK?j-ROP+aw5 zX|J6c`#n>)6j4wesKDpMCS?PUbG*3x^Go3SfEKW87a=XDfRVlRW|Wp@LjXsDJb}64 zk7T6U(o(cYW4}Gb84P~q1h-3tG>d|ZlgXXwcT*AXs~B)aKb8sEc03jg9Sp6z3@yF_ z=CYsQ%%Op$1tmtWeBpY2-o;xoiOEl0lk6X}yi68$0~1e7WO&sPO(P{V)G-@RLiDU= z@dkRHrB|+T*|Y|4xbPQ)!Xta@9PhR8d~~&LhvGWd*R$9SZ#Tuqb_*Zk5BPK%@&p_U z{>-orHSZLJ<+|z{)0c;u_8KTx45LnT-CVj)W?b?Y9d0T@goOb z0Zd%50{KMBL~t2d7S6KwJ}r1faz`o;+Dr9!z8GN}dPL=aZW4c4awXlIb4E1}QTJsO z?tbiXl)#D`eoF$@cH&ImJPUZCf~bZ(6y{;6=QxFL3cq*ySZfC7*`~=j}SYxA(*<2b&T2rVXhB}cuGff0u(*bcWZ9Y@+Xgy zX4xP=j5R2+tLNhtwVnFb#6H~bcXw2qBpsMtrCNfSqmEkT!&(DW?gbiRFabZ!5DP7n zv%8v~%h+VOLW{-FzUgeoPl>C@vw?tifXd?kT))SVLh*jWCgvmJvhRLFc@tiwU|w5H zEM29|MI#x_9tZMrVY3HQ?Os7!DoIPtEJ=$;)PrZ+XorfH*BN}>tXH`{Hrp|m0L^xT7Y_^zUMiby z__K2O?de5sM&2RCXda;G{?$*vh0}Md6p>QD&g=xjuUwpL5zor4x3OL7@Og*C6raqR zU8)`_)C91aU8Dr*da)(RT?gL6gQhEo!rGHxntij^dmf&kK0&0X=bTVuFh|VDdir+{ zrx}b@*KtKra zpa;j1>Ca8JbD>40CwIs$LtfG7H}Y0@j|J5v>)-0C%bxOG-qWm=!H4+a4M}mbjRK2@Mpx)yblO z7_3zrQ{R2^UKvy&-}cwBji80h@b&s>2u^XO8&i5SU(mgewyh~j(eWx;b={-H<3&$M z=noCAv+qau4|W+9^?&T(`c%dmlWeyyt9Bm&h7N4NCC|0u zmAKh-FWx{j1PexEaFsL;@o%Naf8tX#$5nkYIXYxOY2(PGf83-FiA=uvkZ0a-Vr?z3 zsKiVS5BXERW% z0sb)@QEWnqduieY^WLkDcy8y}rz3Um>Yr$C{>O=cH}59dgD=E3=}f|dcjA0Rx7{w2 zO7cu@jwi9dP5XVYUnK@UgVbKz8-T0U@`MOkO(=5{y0Cm^9=|d0+J{bJfe2ZWi8_I1 zM6{RX5o-&NJ>0H}qY2;eOQ~$Idg!g>41Um3L|F`#tZaS20B-ly{L4i=`z?ZI_BJ2@g9 zs}5+Zc+hw5`Zi+>@1UUrb7N9~VT-f5eX1VabZT{#rW&jPY^?pU+)rp@-i^a6YUFYh z9a8J11JUdCLHWI=JY$H8%N(aIx&1W+-)h~~ZI+jpaP-U88a%O@YUA-ZPB>j5<=?N> zS_=2Ui@mNfCRVrar{3BNCl5(=0UG#X+1R54vwpxxhcozg`JlF)&lWQU2Q@&(NNF7A z(1u&Y=(qgbM^Fqu(p7Z)mnemZkIg2U^p+$1Q9_3@mcM`vjgcE0sVIEeqL}Y<^4T?6 z-mYog+34WBkzy=LpJ-&Q0A~1cm4X#Z14N;0;WQD4!YA@D$l2!E6D1$;!S_aP>1iY+ zd-PE*IkKdJwdxh%TH!gT^a?=#@Cs1edy(_KX+Ec?zfXJDC-~L>zk49>?iXLaG`|AU zKUh3__{Q@ct%VVAr==gt!MxKu+tH}@093>^ugsu3;mNby1V+Sh^07(JBrn?+( z$Gm0e+@|S4^@{dFml0P1@h~$vk0v|CQ{6n$MXZUuF@}SC1y{Ik;3dC~(q`gnfo19Y z{RfrA)iSI#Jw>E(_c^uMV#=f) zh{Gt+f*LUX^S7S~)Be#O;i@7oP!|8=-<|Y3cp;O;$ljE?=8rO{Gk3avlmTI~j|3nl z;$#t}^Yqw9CUo{W;>y2C{(ddvZK>PQQC}4y18z*sj~<7W{*3&XC;V)%57=yjyMaD7 zaf`PvU1zU=y!Vw%xoIxO_0C2o&G%tKrG7 zcW_lRwk0xC&or0QB%@kQph?(*j7E!JH9|Y&QclMEVo?Gq4beQrwTi+2-7?ArFP_@x zM~*a>pljZ;R$8+nU68X-)f{9oKMJYQtIWJ-bi)e$;1O~Be4!v29>WfRh zdb8QtO1eqV3jP(4?=hR~zJV$X+dJE=5|Z;)%<*QneWq-q8RyiV9DCg}@WNfoD-<=W z@qWy}tNC@p7KwtHJ?FH$nODCu?52=o$}YTdBT0n|P~Bzzfd&y2oakeMD=5<%nz~Td zK7}03L|&!z@V&r>c%3wBjz7(3p7STIaG1efTIJu^zAd8hnM5_D1LK(zM|XLaMx*de zFsZn9FnR-az9Pc4b)Y@5)=!;0skYP9U)nOQw}Pj)G&Eq+2sPC*j7SncMWR8xmM_D% z(g!dxmlS&>r#VVJTexfDNt6>qW=%}3r=-TU=-Sl%*!|eP{h8=v`gS41oqc?fE=w=_ z{^Q^$Rz5ZY9)Y1c|CZ;(K_2K_^Ge$NQRU98;#O(Gx|>sLGvD31~gFRRQhh za$YOQVu~Z3HN-?-pocIlov}$JwrYY>f6I51phpILUVrR@wWz^)eb`lSVENc&QzLpB z1$&~5o}D^e+@l|l!RkyAp1hb9aoOWs#Hb|DSku#Cb4LR+e)AxGH_0h<<7u6Tlnaj+v){* z&CRoy_}kI%h&HwZo4ny3N9!;nusfi)x_2NJLm7{UO0YBu(h+)%iRI?9xi~!cHQ_|F zJTrdGE?+yp2HAyPSX?ZyWhOXxZIj@}r^BLT-py08%3NS&_BZ1$Z)-2z(ulM+dj2{C z9a*Smh%M>vundDNs?7AUaZ|vdjJnr7_Ub!IqDvFU0BU^+Pc);9;SN2P356CXZjO%N z8+7kYekQTrBn52?RdoA{9#`_A&;HWQZBDzooWUj|rHWd_T-jKsEs(WHaAY_uVEj$%(N z;OSPTP1G?t&AR$ojvm`|m_7Wce6%l$hVKQ&0i9MK&sZ$>b|xjl7z&M$Pf z9j2TnRwRKb_$c~d;g4P9s-Dkh-!4}iWnKp6Sgy|4#~+zSlU__$S{kagw`hq5q;GX- zdvW#?2;aYSLY~KZO-=m{d}LZJ#%~tvBLV7>8IWZ=%Yi3*Yf_KfrQG%idD$-{uK+&6 zQFGM6dwEoxk0OT-eB_A>jEn~hV;UZLAt6H1@4bHPxbD9K_|?bHX#(vxyggn4Qq6AL zO|_{xaXG*oeLE>2TugWR-<^5U?bu|&zBB60VxA+=)SB>JyhMiVYa5gKRAFm|Q82lcj*@J`DMB=(D3L@)s zFK(A!f)1ii3LLqTn9u-o{4skS#OVr zm3dvJtpi7MrMqCK6B-^84NFr$(S~2OB_uJ+_c`6LB)fo*dYfetV=O(cx|{(or$=8x zB?ESc$rNYD4e>R|9PJ?V7=~!&@u6^b3tgJiC(xEevq!>>?GBWboWJy7Sg4cXPd~%5 z%wEKD6WZJ*quI2iJE5w61j_D7P`SE=CTGMWrY*poJr$)BTW4i^7cZNxLARm=Lyl{7 z+(A|x+f8pPe=KN=v{KO-3VngB4JdiD?D$SRbzm=Pxi4Kn8!^4+6%(5>8g*$rh%$V` zi$;okY`sigW5-J5QWqolCa&(j%-*+ZM6yW#%E`x|*3(Xv-NWrTVT<-QHOHKsKbWxq z1P?*FDl4JiqJ2|9HhQQOrQRs3!(Lx|S6)0%k5py_`qZT_XT~@+iu}MD@!&u46>q literal 0 HcmV?d00001 diff --git a/thirdparty/zbar/docs/pic/zbar_test.jpg b/thirdparty/zbar/docs/pic/zbar_test.jpg new file mode 100644 index 0000000000000000000000000000000000000000..37ac4a9c42de2b5bf1c8cc261c0840a90d769396 GIT binary patch literal 13821 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 z zdvsZ`W7V#`_XuL|tu{drrAE!7G3s;Yd*46Y*H71R{dD~W@8fu#@AG`E$MZS%cXn#) zUox(pexR!7*~-0B0qoqH*6F%d0eMyp+or~rl&c#4@uUHL=9<_WtBwz-W!E8HS$DJB zj?~(7c5xfg@rZofk`|MH)Mi3(o*4sL@Xq64hpk@7Ezq>Z)!?Rj>V#ED{NY-CN_{SA zGRN$U)9RVpF#r$V5{aazAF&u8fk%D2xTWv1LRD|YD(|zIG^>&;(Vkf~U^>XYva=Zz zDb8NV_xX1v$9s3IrI$(dkiI$o$>H+&7vyl1z_ErM7ISa&{DD@k_?;)3w>B;J6jo1n zO!)WCBD2SX${VAN6VY>UPuy+{)YL|XluAd^NU*N zVx&)HbcUkr*NOD9WSiX+;a9nAq^%XrZ)xMVdrAB;#d#IjE^DsIiWW_U@Ny-8S4K@e zO-J`Q@@J)tVJuv$s$ZcB_U6-vn zD#+BnU8Gg=nS>A!x8U@z_FV9CItH7}q_G{HW@5N_13cWn>1)s2tr zXtx7-jvh{`#>6@1X?iJZQs_l9)-JbeJIua0X4B zp{I!qb3J8|$j|!dO{YCa;i(rD${Hqe+M+6v>5c_DCL|LHox{rDBSL^V;ipmicTf|M zfQeqQZyhOr_KxCd8IzM5#eMe|eK(51I*0gvrTU}z{F$Dg8jaN!YOoScxnRe?tDWbc zg126bIWOP{&8;!uQd$=#J+pBr$H)Y3>{Y=>%P+ANo=MiBEYjouq@FH{ev#FmX)z=B zwFzr^35v7*VYW^8tNG{)QE+~*Da!Vfjeup*h8$Y$*2-aJb-HlbZ?wBZ|}42gcBY5Cv* zX&7PxU=lY0*Pu?uZxFfEjuP9$5BBOr>0GMjHC-E09g^K+5Dm&}Df1Rp?_eCXzB7LX zyOLO?dSV`WOG>|<+1r07_z*Zv+d63(VT^tf*AEaLP<|Ntz=U~E9e^2-NyPo~;Wv%Y zYyLFmXS(kYJ?mZ$y8nYO7*SVqB0bpWYd6~#zuF4XJ4%cRselPiodP1h?%~;rQl%o` z>@`*7uQ`^^D#le0-9i<3z1MrW9A`vY6!UQ1NMID!Cp(2Fd`R=SXWeO@<@|w?oV)Xr zh6+;YMFz9RXN7MX&l#GH)LIPlJrZ3;OA2>KzE@SXy8e8)2$?wwB|Hp@OUOfeeo3)auuE6}`>wY*Ar0J`1{?fho(K>hO z%@@qQ?3FLvwXW4OpEJFy775Vd_h@4{1Ye6Z%(y1&Po0#?OW68FL@BGk(mSYz*E47O z-N=M01=8>6@1)L@?`Ib{H(Zb^f|aGQ6-W4!I~>8U{3oAVdXHSA5c+yBC2E*Su(Qh5GmFf{k+k2VAX@SQlKhm&B_u-j4+y%khjs8$b$5z z!2R6)o1|==BYA2YUn`xPd~k=Wla5)&se=Erf@LMAFUfL42d$nMA@{s`XT%*^S5MS0 z)+~aaVN#=0@&&>-(y(cRSwoAwWRbzN5w~K!SvuK`F~Qd~-97}EoBAAbmr5L_Fa%9l z?RlCUz<{2TS&Us);P(z3f zo}@tC;-F8Y3YH<;2qkBqUSHe03VH|x^Yg{FWrGeod6l(A{#nz$sloou7F#9kdz#PO z1j2qsqhKd8=2ksIdKwf(rxo~hrO6ifdaF4Vul|(3;@dd|-K^V_mQv~125xB6WiUbncoJxo%0@C(?KS z+sCT*nqg)X6IQRoYdCX~!E$otlgxw>9FF&t{MrSO3nAx9^rjGGaG6_E%NNM5#Nl0J z9THLnlU(=R1cCtXB5#V*tBFu6tvZs!m38JV2ibKPrYpObRTa3+iMqz&m4b~ZT99a) zfacAbq4H%dv3D0HdH$foKcQDvN4&jEv#chIFwk$T?j(1-V+yqvi$*6f_`U}F#&2Bu z+YPs@RYAVW<10_FEb1ia7EximXN3Vc+pRWT0R}(=9<2a>y!?x1CvgLn_j93|tcn2TsjA`c-%TQwCKBiBdLPDBpf=^=@CCiXz9-|Ky zx`40I()-qCQ(hy#zC5w2>{~kFEXV@verrlr8QQ9Rg(1Ewupq|wCQVV9m^VxiLcB%l zM#H_p?t72NUUl3plX?T;^I)ILAcm|!YG*45lNAEZQ;GkQA%H!BmT4Lk5886Gf5B6e zQtO9wbR673V zsUa~H&}1C{h;di964Ff5G0rObZ9Mlo4zk_Z(zxxPMNLVSm>r)ed3$8kgw-cWsV87| zk5OOG|7ng;fe>MCga|H1$eR5O_yz9WZ2MbnsDm>f%HVP&E*O}IyQ6kTN&asB&;^A! z_zZQrC)XwEOViW-kO=rC6hwdFU;4o7JMS`OoWo>Kb=&u$Yv)^(QA;r(cMz^QDA1g+T#==cl7p4LW^~amgL+EM;XD%=qX#f1a|o%0PQ+zv zJ_%xoR%0sA>~->X>$uQ{vL1xiH&(Kl*3~sPVOpjtb1tR!%klO@U%xiOa$|=(PYZ|k zf&hOzk$#*$sxI?H_n&&Ck!G3N5lIZn_iQLq_e?yAvd)%*joMw^wf=i$SB9EA#Izne zT{o&gB_M6Rd9h>i@RoQ;6w_VP>hVACCDYR%ObpG-@WDYQIlH7iMQ>I_{j$QMVf|EH z20!d-PvzCu1S%1iR|rxlR%2}t)fZC&lrI#IpH^M|F?NRqxaZZxZQ;D?X< z$H|v+39&xH-rQ6Au)OB@5p+|xz9Al``Nl`SESIjESB-c|L2+)xkm_8Tt5)`FH0vIe z@#1NXAlA%$Rzm<2KSl*nR$? z;6Xb;JJ~b&G@`n7V&8=2jM!nxij+kl_10ElSO#B$ujKWqh@wy3+ zevz=+26?~+I9e4UnJL_0!?LvF1q?zs!s%xZ_{R8~<`3&E!llVSAR^Zz9b4TKj0`)b zzL@XKq@D9$@a))@=$e@GKegW|4JyXC{rzyA6{Qx z7>5RLPFw*9!+zMmYT5(8@}s@;CRcyc8BlA*KaQ*{c<(nSr0OR86b?^VPQ^fu#iHyP z^S)JNT#)wh6N9DBp0d_WZ*2KDdb|qmptQs2#P2^7VWxP8TqnO~D1;OC07fmdZ?W0~ zb$^xF^!S2l^P|>OZJJGQ(u`iIRG(D{phAN`&tOPiAViW2A5X-^^qHmwW`)FBKhK*) zj*4m?*;*^X;Ed>rVT$BNP$#EABu4Od8*F||&Zyb7ID5Xo)HzBr`)Q(o9IZQW-E3k4 zL$iDytg#V_KT((&)_)}ewx9WxytJQH5_G5;&7;4CaXT;$5@=uLD8q|Qo3hLa?6FubsupTGaZrIf9y@wt-#YodjpN>H$$^J)zaRR(zL*25 zzB}CRk55_D27>C#rv`?1Y0|P15pv7B<$rcJy^`?4-|dK>QvY^Nzplsl`EZ9k;f-4v zRyANwp{K!;m{cWG5_E^N&MMqJGd8fc><^#^&?i6SvlAbxSp4AG(IMTb7>w{RQm4GT zXkv#ZLA^*-Z3Y<|RnNuC6GyYvcIJP{x)eF{$>*AbV_P&jTBZh`tJw7Nv}%Cmw}Z2=l9np30F&* zg}o*MNzszp^k~*?%6ASFPTB!L!#u(tr_QS}gNI@ssac?JxTSeMk6tKr_AQ8Ttt2dZ3z)wnhE#X+AIgX2|m!AH!dvLdmI9 zm^*e+>qSKu8Il`tI-5^Cpsh^u(7ow4M!AG;D2(ST(JFid2 z`PZn^9emMzXe0Ob=ud}x>CTH%>l;TsiqwlezDl$8lp1d49I4|WV|F9|%y(hcw8RkU ziQFIiU4FX&nzQ!Tnfr4v1B9Z#W%)u#uk(!A>h(n{2;?a8!A0UUu6HJ{;ScMV9A_<+ zmPdf2-w%f)Z_0UYk_<6LU;=L8%^?_&RB4{gy!@9>AQiC7S*Fta{020Qw1~JI>bHw< zLh957u1C6HA9;4oJ#i91*^5(+Sg}$nj!8q5G6yYnRfSRnv1h5Fz=1bgW>N6?=pqADQt&d=ILmrgv>s5fjPQ|L(!!UG zm|ho<;Hh=WmNR{;D|C)~0rm_5O?h6TPk#Szfjym^cL*I@ZE4kfnaqSq0 zWYM+LyO|{2=T5e5DbJ8o%I^k@TxQ0eXE=UtQOYCQ_Dl`RF55WO^i9Z~Yt=M=s%Wz6 zp~+w(#?UW|_Kg-;K;y%5vy7$-)f}2I(M~V@QdWe|S%6j1a>xo}6oYfA*`A+&=VSz| zt>KEg`}z^3DAAOPaO*+Wz0aB=E-1E9Z>^?V(tT%wm5`wlqJ`;{$VrqfWV*1e-lCh5 zZ&s|VjAT{&a4f^icka3B{ZifQ_AtLEIDFPeM+3&33!Cau`QC;=&8N1s151d+2OWsa zO{~r5=FrfSgGYSLGc)*<_mO;c)3Aob;7^VANJndC+7JrvqV?2Or?T~@CJ1%5QqDx0 zo;0CrDKld6=xAG#X!(znuMTFsFG?mgO5U4QnSB@+QI}9xpQ+=ZVu!MJ#W?`>dwUslmVG`Nnvc^vS`jUJR$%@RO(i&n}GkqOwY?-@Hp28bh z$-xBX1PnVB6!Mn@O@5a#lvg((V%*MF=yuG_mlt+Y%V)ES)VWn(X@`Au4)695e+KwC zuydQ1IM>A_#VH;fU7hQU`;{~&_BUiwC=;(Lax5?(Jqu0SVND$0j@m0|u8r7m4U1H|Nh8~=7QYz0-}FVC>?B{eDAv1kDx{P9-bI3MbL{{}VD(vcg1$^gUG z*h~jK3$pH3R(AS`8vtAQ`#B%765#yne^2 zQHcI&_|M==DYUp0Z1;K&GSo7OlF7`PJFRjr#Vjoy{tSg7H`14g5!&A)?QUCXSUUXk zGx0bl@asWzPW=glsP6x~)W*VvwR~x^&lWvyb-3XE_O*BiUzBbXU2AOHJ6R92JFCCglKbmKhIq)~ltTw*&~- z#nOCbzb(B37=2PWa|shiy>xO6{*cpCb%`%{%j|& zOxDBe6oL&kl(oKhul`pOy0^$l67T*j#!sB!863LO2cPDoa@xwG1CpjOH^qXD|rl`maoT^8%+QeJ|1$!%r+Vw0F z5q^GN4QM=mc1*}xIZjyGed>vR;%d~wxXW?s69Xp$RNMmT!YXAuU2sK!GQ_Qvk2&;# zs&#)nC%QWNpLpR*c~?D|1?7)4*SH>S>pS_LMG+XM6^4ucW*RkD8zq_k_|h;V{Oen> z32!AcJ142#Q1%om&0LfUYmr~4k|S^yx=R4$=?DQrM&0ag2+khlW&S6Oa8MX>yk5VW z*jXUZN=R$mnDtlun={)rt~dF`&5K>{F+?cbz5`xYZP=;begF8raBJ?CI* zKzB^s(d)Ts@_sdLiiKfV-yr{O6U2}xh0Nb387v*-hFQ8;GeRjtTQ2RiA4HME&ll{C z-`_=p`k2p7%f>0at>8@?=GTb(ICht}^}UCI z!DQ!f`|zPWQxDf8phTFz9rvf5nNy##s6y^vsAV%n?~a(S75ER4n-x1;wEl_&pkc4x zj%M-Vw(R))56!)tsC^#vvgC2(npT4iu|`^9W~0tf1?RZh zk!wbt+4A<;MZ#H>U5L&G9nWP;-p7NQ@a_BmY^Rge$dt|X9 z@kRZgBs>o1w6gbnlt1OeyLlE9szHZ0eb3^15i2yOPe5{RbkM2gJ_$CzI}O!QKRBVI ziu(~of`WDqDskWUP8oXjjW&XsNzYceTEF9Ap(P0r48AgREQi+a=>Pp>m&)vMsX?-l z8B<|OlsxNX!=B`&*?d1~rzWPUO>Rt!@=V*;CXuipr?od5DU_kF;*S3GiRr?}08u%~ zl1Y><3p=u*JrEl2&jv>?StETj8sf?*h3NcDbA1SCyjXg!v_X0DHMcqiuIfsTP)@0I zv@v?cD3yfgN~KJDe7_M*kk0?OwlYYD8O5^PYJj40vYxxH4WX;?PR$3w9*aQ_oeV9Z zkG5oEF>#^>lYGsZJbbIYn~B0+jhE-7&P;2UAQ?=MJ77{Nwb)_wwXWu`OFFQt9tH_4 z(MO8cK9P$}kM)+1B2_R=q&&L-y9PNQ64QDSIICUU?U1U55Vlb%N8Fkiw^bQ-TD-wR zQEaOa*EGszGkMAtj`l7!nt3|g*R?4(W2LMD5Ae0+we$P5j)1Z7eaLO<7|)z|wa1Tq zT4aeD^%B{Usw{S4GI1xXvDBKZ;<)iv^BQT60`Migip%x#dZS8j`0#(p4dZ{+pz_~^ F{{yZdWkvu1 literal 0 HcmV?d00001 diff --git a/thirdparty/zbar/zbar_oh_pkg.patch b/thirdparty/zbar/zbar_oh_pkg.patch new file mode 100644 index 00000000..afa281ff --- /dev/null +++ b/thirdparty/zbar/zbar_oh_pkg.patch @@ -0,0 +1,12 @@ +diff -Naur zbar-0.10/examples/scan_image.c zbar-0.10-patch/examples/scan_image.c +--- zbar-0.10/examples/scan_image.c 2009-10-24 02:16:44.000000000 +0800 ++++ zbar-0.10-patch/examples/scan_image.c 2023-04-25 09:35:19.209035532 +0800 +@@ -30,7 +30,7 @@ + if(color & PNG_COLOR_TYPE_PALETTE) + png_set_palette_to_rgb(png); + if(color == PNG_COLOR_TYPE_GRAY && bits < 8) +- png_set_gray_1_2_4_to_8(png); ++ png_set_expand_gray_1_2_4_to_8(png); + if(bits == 16) + png_set_strip_16(png); + if(color & PNG_COLOR_MASK_ALPHA) -- Gitee