summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvrouvrea <vrouvrea@636b058d-ea47-450e-bf9e-a15bfbe3eedb>2015-06-18 14:49:07 +0000
committervrouvrea <vrouvrea@636b058d-ea47-450e-bf9e-a15bfbe3eedb>2015-06-18 14:49:07 +0000
commit669459903831d01ac1399c2d0fd2111d00392a1b (patch)
treee073865b8245272626a5066ea9524a01d4f5a170
parent4f18bf5115955c764f4eb15cd600a776f1a4d9ce (diff)
parentd7c885fc4eaa06be6e6b57b8c3bd622b82a20c77 (diff)
Backmerge of last trunk modifications
git-svn-id: svn+ssh://scm.gforge.inria.fr/svnroot/gudhi/branches/alphashapes@625 636b058d-ea47-450e-bf9e-a15bfbe3eedb Former-commit-id: 8729c94e37923be0bbf943513025e7362807f041
-rw-r--r--CMakeLists.txt29
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/asian_mug.off0
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__0.pngbin10925 -> 10925 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__1.pngbin10529 -> 10529 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__10.pngbin10627 -> 10627 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__11.pngbin10654 -> 10654 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__12.pngbin10509 -> 10509 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__13.pngbin10511 -> 10511 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__14.pngbin10487 -> 10487 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__15.pngbin10448 -> 10448 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__16.pngbin10433 -> 10433 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__17.pngbin10330 -> 10330 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__18.pngbin10523 -> 10523 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__19.pngbin10404 -> 10404 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__2.pngbin10826 -> 10826 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__20.pngbin10349 -> 10349 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__21.pngbin10149 -> 10149 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__22.pngbin10352 -> 10352 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__23.pngbin10128 -> 10128 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__24.pngbin10179 -> 10179 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__25.pngbin10123 -> 10123 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__26.pngbin10153 -> 10153 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__27.pngbin10101 -> 10101 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__28.pngbin10089 -> 10089 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__29.pngbin10126 -> 10126 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__3.pngbin10886 -> 10886 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__30.pngbin10202 -> 10202 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__31.pngbin10043 -> 10043 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__32.pngbin10127 -> 10127 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__33.pngbin10060 -> 10060 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__34.pngbin10024 -> 10024 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__35.pngbin9900 -> 9900 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__36.pngbin10124 -> 10124 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__37.pngbin9968 -> 9968 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__38.pngbin10055 -> 10055 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__39.pngbin10118 -> 10118 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__4.pngbin10730 -> 10730 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__40.pngbin10035 -> 10035 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__41.pngbin10131 -> 10131 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__42.pngbin10073 -> 10073 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__43.pngbin10111 -> 10111 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__44.pngbin9919 -> 9919 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__45.pngbin10169 -> 10169 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__46.pngbin10003 -> 10003 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__47.pngbin9974 -> 9974 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__48.pngbin9559 -> 9559 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__49.pngbin10247 -> 10247 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__5.pngbin10744 -> 10744 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__50.pngbin10169 -> 10169 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__51.pngbin10362 -> 10362 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__52.pngbin10363 -> 10363 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__53.pngbin10366 -> 10366 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__54.pngbin10300 -> 10300 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__55.pngbin10485 -> 10485 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__56.pngbin10850 -> 10850 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__57.pngbin10852 -> 10852 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__58.pngbin10893 -> 10893 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__59.pngbin10758 -> 10758 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__6.pngbin10715 -> 10715 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__60.pngbin10874 -> 10874 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__61.pngbin10895 -> 10895 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__62.pngbin10990 -> 10990 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__63.pngbin10831 -> 10831 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__64.pngbin10994 -> 10994 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__65.pngbin10898 -> 10898 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__66.pngbin10877 -> 10877 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__67.pngbin10936 -> 10936 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__68.pngbin10900 -> 10900 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__69.pngbin10821 -> 10821 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__7.pngbin10627 -> 10627 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__70.pngbin10781 -> 10781 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__71.pngbin10795 -> 10795 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__8.pngbin10631 -> 10631 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/asian mug/obj12__9.pngbin10676 -> 10676 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__0.pngbin4705 -> 4705 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__1.pngbin4637 -> 4637 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__10.pngbin5367 -> 5367 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__11.pngbin5791 -> 5791 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__12.pngbin6327 -> 6327 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__13.pngbin7108 -> 7108 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__14.pngbin8092 -> 8092 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__15.pngbin9676 -> 9676 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__16.pngbin11771 -> 11771 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__17.pngbin13525 -> 13525 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__18.pngbin12569 -> 12569 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__19.pngbin10386 -> 10386 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__2.pngbin4569 -> 4569 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__20.pngbin8640 -> 8640 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__21.pngbin7666 -> 7666 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__22.pngbin6850 -> 6850 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__23.pngbin6126 -> 6126 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__24.pngbin5574 -> 5574 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__25.pngbin5285 -> 5285 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__26.pngbin4892 -> 4892 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__27.pngbin4736 -> 4736 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__28.pngbin4607 -> 4607 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__29.pngbin4475 -> 4475 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__3.pngbin4523 -> 4523 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__30.pngbin4480 -> 4480 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__31.pngbin4491 -> 4491 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__32.pngbin4485 -> 4485 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__33.pngbin4537 -> 4537 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__34.pngbin4673 -> 4673 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__35.pngbin4817 -> 4817 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__36.pngbin4672 -> 4672 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__37.pngbin4506 -> 4506 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__38.pngbin4521 -> 4521 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__39.pngbin4494 -> 4494 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__4.pngbin4514 -> 4514 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__40.pngbin4420 -> 4420 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__41.pngbin4413 -> 4413 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__42.pngbin4475 -> 4475 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__43.pngbin4511 -> 4511 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__44.pngbin4778 -> 4778 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__45.pngbin5026 -> 5026 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__46.pngbin5298 -> 5298 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__47.pngbin5801 -> 5801 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__48.pngbin6422 -> 6422 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__49.pngbin7211 -> 7211 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__5.pngbin4493 -> 4493 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__50.pngbin8521 -> 8521 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__51.pngbin9900 -> 9900 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__52.pngbin10951 -> 10951 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__53.pngbin10703 -> 10703 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__54.pngbin11112 -> 11112 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__55.pngbin10947 -> 10947 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__56.pngbin9299 -> 9299 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__57.pngbin7912 -> 7912 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__58.pngbin6818 -> 6818 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__59.pngbin6234 -> 6234 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__6.pngbin4507 -> 4507 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__60.pngbin5626 -> 5626 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__61.pngbin5161 -> 5161 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__62.pngbin4896 -> 4896 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__63.pngbin4576 -> 4576 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__64.pngbin4414 -> 4414 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__65.pngbin4268 -> 4268 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__66.pngbin4177 -> 4177 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__67.pngbin4117 -> 4117 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__68.pngbin4172 -> 4172 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__69.pngbin4235 -> 4235 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__7.pngbin4669 -> 4669 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__70.pngbin4408 -> 4408 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__71.pngbin4603 -> 4603 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__8.pngbin4791 -> 4791 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/little car/obj3__9.pngbin5050 -> 5050 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__0.pngbin8798 -> 8798 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__1.pngbin8603 -> 8603 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__10.pngbin7095 -> 7095 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__11.pngbin7062 -> 7062 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__12.pngbin7054 -> 7054 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__13.pngbin6954 -> 6954 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__14.pngbin6963 -> 6963 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__15.pngbin6944 -> 6944 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__16.pngbin6908 -> 6908 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__17.pngbin6856 -> 6856 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__18.pngbin6814 -> 6814 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__19.pngbin6684 -> 6684 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__2.pngbin8342 -> 8342 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__20.pngbin6622 -> 6622 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__21.pngbin6555 -> 6555 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__22.pngbin6550 -> 6550 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__23.pngbin6582 -> 6582 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__24.pngbin6644 -> 6644 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__25.pngbin6617 -> 6617 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__26.pngbin6676 -> 6676 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__27.pngbin6802 -> 6802 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__28.pngbin6827 -> 6827 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__29.pngbin6871 -> 6871 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__3.pngbin8124 -> 8124 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__30.pngbin6878 -> 6878 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__31.pngbin6910 -> 6910 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__32.pngbin7011 -> 7011 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__33.pngbin7113 -> 7113 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__34.pngbin7205 -> 7205 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__35.pngbin7170 -> 7170 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__36.pngbin7193 -> 7193 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__37.pngbin7156 -> 7156 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__38.pngbin6991 -> 6991 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__39.pngbin6864 -> 6864 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__4.pngbin7870 -> 7870 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__40.pngbin6810 -> 6810 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__41.pngbin6622 -> 6622 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__42.pngbin6480 -> 6480 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__43.pngbin6291 -> 6291 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__44.pngbin6147 -> 6147 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__45.pngbin6085 -> 6085 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__46.pngbin6053 -> 6053 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__47.pngbin5996 -> 5996 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__48.pngbin6029 -> 6029 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__49.pngbin6016 -> 6016 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__50.pngbin6104 -> 6104 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__51.pngbin6219 -> 6219 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__52.pngbin6234 -> 6234 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__53.pngbin6287 -> 6287 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__54.pngbin6349 -> 6349 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__55.pngbin6395 -> 6395 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__56.pngbin6436 -> 6436 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__57.pngbin6489 -> 6489 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__58.pngbin6591 -> 6591 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__59.pngbin6787 -> 6787 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__6.pngbin7575 -> 7575 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__60.pngbin7084 -> 7084 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__61.pngbin7293 -> 7293 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__62.pngbin7655 -> 7655 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__63.pngbin7922 -> 7922 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__64.pngbin8190 -> 8190 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__65.pngbin8491 -> 8491 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__66.pngbin8697 -> 8697 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__67.pngbin8815 -> 8815 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__68.pngbin8933 -> 8933 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__69.pngbin8936 -> 8936 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__7.pngbin7408 -> 7408 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__70.pngbin8879 -> 8879 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__71.pngbin8847 -> 8847 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__8.pngbin7322 -> 7322 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/lucky cat/obj4__9.pngbin7208 -> 7208 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__0.pngbin8798 -> 8798 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__1.pngbin9015 -> 9015 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__10.pngbin10539 -> 10539 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__11.pngbin10430 -> 10430 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__12.pngbin10340 -> 10340 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__13.pngbin10180 -> 10180 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__14.pngbin10262 -> 10262 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__15.pngbin10530 -> 10530 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__16.pngbin10597 -> 10597 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__17.pngbin10387 -> 10387 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__18.pngbin10101 -> 10101 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__19.pngbin10029 -> 10029 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__2.pngbin9112 -> 9112 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__20.pngbin9964 -> 9964 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__21.pngbin9810 -> 9810 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__22.pngbin9754 -> 9754 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__23.pngbin9729 -> 9729 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__24.pngbin9996 -> 9996 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__25.pngbin10146 -> 10146 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__26.pngbin10412 -> 10412 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__27.pngbin10534 -> 10534 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__28.pngbin10334 -> 10334 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__29.pngbin10140 -> 10140 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__3.pngbin9447 -> 9447 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__30.pngbin9766 -> 9766 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__31.pngbin9482 -> 9482 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__32.pngbin9242 -> 9242 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__33.pngbin9101 -> 9101 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__34.pngbin8974 -> 8974 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__35.pngbin8984 -> 8984 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__36.pngbin8970 -> 8970 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__37.pngbin9095 -> 9095 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__38.pngbin9257 -> 9257 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__39.pngbin9419 -> 9419 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__4.pngbin9795 -> 9795 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__40.pngbin9638 -> 9638 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__41.pngbin9831 -> 9831 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__42.pngbin10252 -> 10252 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__43.pngbin10760 -> 10760 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__44.pngbin11361 -> 11361 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__45.pngbin11797 -> 11797 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__46.pngbin11669 -> 11669 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__47.pngbin11490 -> 11490 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__48.pngbin11216 -> 11216 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__49.pngbin11092 -> 11092 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__5.pngbin10078 -> 10078 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__50.pngbin11029 -> 11029 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__51.pngbin10943 -> 10943 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__52.pngbin10954 -> 10954 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__53.pngbin10977 -> 10977 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__54.pngbin11049 -> 11049 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__55.pngbin11039 -> 11039 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__56.pngbin11050 -> 11050 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__57.pngbin10966 -> 10966 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__58.pngbin11140 -> 11140 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__59.pngbin11316 -> 11316 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__6.pngbin10480 -> 10480 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__60.pngbin11584 -> 11584 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__61.pngbin11718 -> 11718 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__62.pngbin11234 -> 11234 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__63.pngbin10707 -> 10707 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__64.pngbin10242 -> 10242 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__65.pngbin9884 -> 9884 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__66.pngbin9735 -> 9735 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__67.pngbin9488 -> 9488 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__68.pngbin9203 -> 9203 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__69.pngbin9202 -> 9202 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__7.pngbin11082 -> 11082 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__70.pngbin9072 -> 9072 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__71.pngbin8853 -> 8853 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__8.pngbin11039 -> 11039 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/images/money pig/obj13__9.pngbin10732 -> 10732 bytes
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/little_car.off0
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/lucky_cat.off0
-rw-r--r--[-rwxr-xr-x]data/points/COIL_database/money_pig.off0
-rw-r--r--[-rwxr-xr-x]data/points/SO3_10000.off0
-rw-r--r--[-rwxr-xr-x]data/points/SO3_50000.off0
-rw-r--r--[-rwxr-xr-x]data/points/sphere3D_2646.off0
-rw-r--r--[-rwxr-xr-x]data/points/tore3D_1307.off0
-rwxr-xr-xscripts/check_code_coverage.sh40
-rw-r--r--scripts/cpplint.py524
-rwxr-xr-xscripts/cpplint_to_cppcheckxml.py66
-rwxr-xr-xscripts/generate_version.sh4
-rw-r--r--src/Bottleneck/include/gudhi/Persistence_diagrams_graph.h6
-rw-r--r--src/Bottleneck/test/CMakeLists.txt32
-rw-r--r--src/CMakeLists.txt29
-rw-r--r--src/Contraction/example/Garland_heckbert.cpp207
-rw-r--r--[-rwxr-xr-x]src/Contraction/example/Garland_heckbert/Error_quadric.h0
-rw-r--r--src/GudhUI/CMakeLists.txt115
-rw-r--r--src/GudhUI/model/Model.h4
-rw-r--r--[-rwxr-xr-x]src/GudhUI/view/Viewer.h0
-rw-r--r--[-rwxr-xr-x]src/GudhUI/view/Viewer_instructor.h0
-rw-r--r--src/Persistent_cohomology/example/CMakeLists.txt5
-rw-r--r--src/Persistent_cohomology/example/rips_multifield_persistence.cpp2
-rw-r--r--src/Persistent_cohomology/include/gudhi/Persistent_cohomology.h26
-rw-r--r--src/Persistent_cohomology/include/gudhi/Persistent_cohomology/Field_Zp.h3
-rw-r--r--src/Persistent_cohomology/include/gudhi/Persistent_cohomology/Multi_field.h5
-rw-r--r--src/Persistent_cohomology/test/CMakeLists.txt44
-rw-r--r--src/Persistent_cohomology/test/README6
-rw-r--r--src/Persistent_cohomology/test/persistent_cohomology_unit_test.cpp5
-rw-r--r--src/Persistent_cohomology/test/persistent_cohomology_unit_test_multi_field.cpp89
-rw-r--r--src/Persistent_cohomology/test/simplex_tree_file_for_multi_field_unit_test.txt58
-rw-r--r--src/Persistent_cohomology/test/simplex_tree_file_for_multi_field_unit_test.txt.REMOVED.git-id1
-rw-r--r--src/Simplex_tree/example/simple_simplex_tree.cpp34
-rw-r--r--src/Simplex_tree/test/CMakeLists.txt32
-rw-r--r--src/Simplex_tree/test/README4
-rw-r--r--src/Simplex_tree/test/simplex_tree_unit_test.cpp2
-rw-r--r--src/Skeleton_blocker/test/CMakeLists.txt24
-rw-r--r--src/cmake/modules/FindQGLViewer.cmake61
-rw-r--r--src/common/doc/main_page.h33
327 files changed, 895 insertions, 595 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4596f3da..b58eadb3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -32,14 +32,14 @@ endif()
find_package(CGAL)
# Required programs for unitary tests purpose
-FIND_PROGRAM( LCOV_PATH lcov )
-if (LCOV_PATH)
- message("lcov found in ${LCOV_PATH}")
+FIND_PROGRAM( GCOVR_PATH gcovr )
+if (GCOVR_PATH)
+ message("gcovr found in ${GCOVR_PATH}")
endif()
-
-FIND_PROGRAM( PYTHON_PATH python )
-if (PYTHON_PATH)
- message("python found in ${PYTHON_PATH}")
+# Required programs for unitary tests purpose
+FIND_PROGRAM( GPROF_PATH gprof )
+if (GPROF_PATH)
+ message("gprof found in ${GPROF_PATH}")
endif()
FIND_PROGRAM( DIFF_PATH diff )
@@ -47,18 +47,6 @@ if (DIFF_PATH)
message("diff found in ${DIFF_PATH}")
endif()
-# Function to add_test cpplint on each header file of the Gudhi module
-function(cpplint_add_tests the_directory)
- if (PYTHON_PATH)
- # Cpplint tests on coding style
- file(GLOB files "${the_directory}/*.h" "${the_directory}/*/*.h")
- foreach(filename ${files})
- message(${filename})
- add_test("${filename}.cpplint" ${CMAKE_SOURCE_DIR}/scripts/check_google_style.sh ${filename} ${CMAKE_SOURCE_DIR}/scripts/cpplint.py)
- endforeach()
- endif()
-endfunction(cpplint_add_tests)
-
if(NOT Boost_FOUND)
message(FATAL_ERROR "NOTICE: This demo requires Boost and will not be compiled.")
@@ -97,6 +85,9 @@ else()
add_subdirectory(src/Bottleneck/example)
add_subdirectory(src/Bottleneck/test)
+ # GudhUI
+ add_subdirectory(src/GudhUI)
+
# data points generator
add_subdirectory(data/points/generator)
diff --git a/data/points/COIL_database/asian_mug.off b/data/points/COIL_database/asian_mug.off
index f6a9a972..f6a9a972 100755..100644
--- a/data/points/COIL_database/asian_mug.off
+++ b/data/points/COIL_database/asian_mug.off
diff --git a/data/points/COIL_database/images/asian mug/obj12__0.png b/data/points/COIL_database/images/asian mug/obj12__0.png
index 6660990f..6660990f 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__0.png
+++ b/data/points/COIL_database/images/asian mug/obj12__0.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__1.png b/data/points/COIL_database/images/asian mug/obj12__1.png
index 41791863..41791863 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__1.png
+++ b/data/points/COIL_database/images/asian mug/obj12__1.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__10.png b/data/points/COIL_database/images/asian mug/obj12__10.png
index 031373fb..031373fb 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__10.png
+++ b/data/points/COIL_database/images/asian mug/obj12__10.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__11.png b/data/points/COIL_database/images/asian mug/obj12__11.png
index 37d14235..37d14235 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__11.png
+++ b/data/points/COIL_database/images/asian mug/obj12__11.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__12.png b/data/points/COIL_database/images/asian mug/obj12__12.png
index 8899ef20..8899ef20 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__12.png
+++ b/data/points/COIL_database/images/asian mug/obj12__12.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__13.png b/data/points/COIL_database/images/asian mug/obj12__13.png
index 98e8bfb5..98e8bfb5 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__13.png
+++ b/data/points/COIL_database/images/asian mug/obj12__13.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__14.png b/data/points/COIL_database/images/asian mug/obj12__14.png
index f95b07f9..f95b07f9 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__14.png
+++ b/data/points/COIL_database/images/asian mug/obj12__14.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__15.png b/data/points/COIL_database/images/asian mug/obj12__15.png
index fc644f9d..fc644f9d 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__15.png
+++ b/data/points/COIL_database/images/asian mug/obj12__15.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__16.png b/data/points/COIL_database/images/asian mug/obj12__16.png
index 40974226..40974226 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__16.png
+++ b/data/points/COIL_database/images/asian mug/obj12__16.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__17.png b/data/points/COIL_database/images/asian mug/obj12__17.png
index 0bca0fe2..0bca0fe2 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__17.png
+++ b/data/points/COIL_database/images/asian mug/obj12__17.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__18.png b/data/points/COIL_database/images/asian mug/obj12__18.png
index 67257fc3..67257fc3 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__18.png
+++ b/data/points/COIL_database/images/asian mug/obj12__18.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__19.png b/data/points/COIL_database/images/asian mug/obj12__19.png
index 3254e9de..3254e9de 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__19.png
+++ b/data/points/COIL_database/images/asian mug/obj12__19.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__2.png b/data/points/COIL_database/images/asian mug/obj12__2.png
index e8a21605..e8a21605 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__2.png
+++ b/data/points/COIL_database/images/asian mug/obj12__2.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__20.png b/data/points/COIL_database/images/asian mug/obj12__20.png
index f306dc46..f306dc46 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__20.png
+++ b/data/points/COIL_database/images/asian mug/obj12__20.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__21.png b/data/points/COIL_database/images/asian mug/obj12__21.png
index 27c3b6fb..27c3b6fb 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__21.png
+++ b/data/points/COIL_database/images/asian mug/obj12__21.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__22.png b/data/points/COIL_database/images/asian mug/obj12__22.png
index 0707b03c..0707b03c 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__22.png
+++ b/data/points/COIL_database/images/asian mug/obj12__22.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__23.png b/data/points/COIL_database/images/asian mug/obj12__23.png
index bb57fff5..bb57fff5 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__23.png
+++ b/data/points/COIL_database/images/asian mug/obj12__23.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__24.png b/data/points/COIL_database/images/asian mug/obj12__24.png
index 64f2d0dd..64f2d0dd 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__24.png
+++ b/data/points/COIL_database/images/asian mug/obj12__24.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__25.png b/data/points/COIL_database/images/asian mug/obj12__25.png
index 0354f980..0354f980 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__25.png
+++ b/data/points/COIL_database/images/asian mug/obj12__25.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__26.png b/data/points/COIL_database/images/asian mug/obj12__26.png
index 761e8de0..761e8de0 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__26.png
+++ b/data/points/COIL_database/images/asian mug/obj12__26.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__27.png b/data/points/COIL_database/images/asian mug/obj12__27.png
index f949d666..f949d666 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__27.png
+++ b/data/points/COIL_database/images/asian mug/obj12__27.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__28.png b/data/points/COIL_database/images/asian mug/obj12__28.png
index 07e10afa..07e10afa 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__28.png
+++ b/data/points/COIL_database/images/asian mug/obj12__28.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__29.png b/data/points/COIL_database/images/asian mug/obj12__29.png
index 0e776c4d..0e776c4d 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__29.png
+++ b/data/points/COIL_database/images/asian mug/obj12__29.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__3.png b/data/points/COIL_database/images/asian mug/obj12__3.png
index ae63aaf8..ae63aaf8 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__3.png
+++ b/data/points/COIL_database/images/asian mug/obj12__3.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__30.png b/data/points/COIL_database/images/asian mug/obj12__30.png
index b204e0d4..b204e0d4 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__30.png
+++ b/data/points/COIL_database/images/asian mug/obj12__30.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__31.png b/data/points/COIL_database/images/asian mug/obj12__31.png
index 4bbe8c9b..4bbe8c9b 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__31.png
+++ b/data/points/COIL_database/images/asian mug/obj12__31.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__32.png b/data/points/COIL_database/images/asian mug/obj12__32.png
index 050c77bb..050c77bb 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__32.png
+++ b/data/points/COIL_database/images/asian mug/obj12__32.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__33.png b/data/points/COIL_database/images/asian mug/obj12__33.png
index 34b3ca96..34b3ca96 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__33.png
+++ b/data/points/COIL_database/images/asian mug/obj12__33.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__34.png b/data/points/COIL_database/images/asian mug/obj12__34.png
index 73d49afe..73d49afe 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__34.png
+++ b/data/points/COIL_database/images/asian mug/obj12__34.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__35.png b/data/points/COIL_database/images/asian mug/obj12__35.png
index 7907a57a..7907a57a 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__35.png
+++ b/data/points/COIL_database/images/asian mug/obj12__35.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__36.png b/data/points/COIL_database/images/asian mug/obj12__36.png
index 7274dd5d..7274dd5d 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__36.png
+++ b/data/points/COIL_database/images/asian mug/obj12__36.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__37.png b/data/points/COIL_database/images/asian mug/obj12__37.png
index 5520913e..5520913e 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__37.png
+++ b/data/points/COIL_database/images/asian mug/obj12__37.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__38.png b/data/points/COIL_database/images/asian mug/obj12__38.png
index 791eafab..791eafab 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__38.png
+++ b/data/points/COIL_database/images/asian mug/obj12__38.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__39.png b/data/points/COIL_database/images/asian mug/obj12__39.png
index 770c4941..770c4941 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__39.png
+++ b/data/points/COIL_database/images/asian mug/obj12__39.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__4.png b/data/points/COIL_database/images/asian mug/obj12__4.png
index 46b66f9e..46b66f9e 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__4.png
+++ b/data/points/COIL_database/images/asian mug/obj12__4.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__40.png b/data/points/COIL_database/images/asian mug/obj12__40.png
index 9b667921..9b667921 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__40.png
+++ b/data/points/COIL_database/images/asian mug/obj12__40.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__41.png b/data/points/COIL_database/images/asian mug/obj12__41.png
index 83adef3c..83adef3c 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__41.png
+++ b/data/points/COIL_database/images/asian mug/obj12__41.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__42.png b/data/points/COIL_database/images/asian mug/obj12__42.png
index 35229086..35229086 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__42.png
+++ b/data/points/COIL_database/images/asian mug/obj12__42.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__43.png b/data/points/COIL_database/images/asian mug/obj12__43.png
index 74b32497..74b32497 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__43.png
+++ b/data/points/COIL_database/images/asian mug/obj12__43.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__44.png b/data/points/COIL_database/images/asian mug/obj12__44.png
index b9b10f6f..b9b10f6f 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__44.png
+++ b/data/points/COIL_database/images/asian mug/obj12__44.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__45.png b/data/points/COIL_database/images/asian mug/obj12__45.png
index a2ca620e..a2ca620e 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__45.png
+++ b/data/points/COIL_database/images/asian mug/obj12__45.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__46.png b/data/points/COIL_database/images/asian mug/obj12__46.png
index 11e2005b..11e2005b 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__46.png
+++ b/data/points/COIL_database/images/asian mug/obj12__46.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__47.png b/data/points/COIL_database/images/asian mug/obj12__47.png
index b7d0937a..b7d0937a 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__47.png
+++ b/data/points/COIL_database/images/asian mug/obj12__47.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__48.png b/data/points/COIL_database/images/asian mug/obj12__48.png
index 7bfc9f9e..7bfc9f9e 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__48.png
+++ b/data/points/COIL_database/images/asian mug/obj12__48.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__49.png b/data/points/COIL_database/images/asian mug/obj12__49.png
index 57fbc63b..57fbc63b 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__49.png
+++ b/data/points/COIL_database/images/asian mug/obj12__49.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__5.png b/data/points/COIL_database/images/asian mug/obj12__5.png
index 4737b6a9..4737b6a9 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__5.png
+++ b/data/points/COIL_database/images/asian mug/obj12__5.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__50.png b/data/points/COIL_database/images/asian mug/obj12__50.png
index 1bc9aa2a..1bc9aa2a 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__50.png
+++ b/data/points/COIL_database/images/asian mug/obj12__50.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__51.png b/data/points/COIL_database/images/asian mug/obj12__51.png
index 4c2a2824..4c2a2824 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__51.png
+++ b/data/points/COIL_database/images/asian mug/obj12__51.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__52.png b/data/points/COIL_database/images/asian mug/obj12__52.png
index e34aa96d..e34aa96d 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__52.png
+++ b/data/points/COIL_database/images/asian mug/obj12__52.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__53.png b/data/points/COIL_database/images/asian mug/obj12__53.png
index 969132e3..969132e3 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__53.png
+++ b/data/points/COIL_database/images/asian mug/obj12__53.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__54.png b/data/points/COIL_database/images/asian mug/obj12__54.png
index 7d03c9d3..7d03c9d3 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__54.png
+++ b/data/points/COIL_database/images/asian mug/obj12__54.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__55.png b/data/points/COIL_database/images/asian mug/obj12__55.png
index fb0bf92f..fb0bf92f 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__55.png
+++ b/data/points/COIL_database/images/asian mug/obj12__55.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__56.png b/data/points/COIL_database/images/asian mug/obj12__56.png
index eb6ea4eb..eb6ea4eb 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__56.png
+++ b/data/points/COIL_database/images/asian mug/obj12__56.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__57.png b/data/points/COIL_database/images/asian mug/obj12__57.png
index 87655e6a..87655e6a 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__57.png
+++ b/data/points/COIL_database/images/asian mug/obj12__57.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__58.png b/data/points/COIL_database/images/asian mug/obj12__58.png
index 7fbf2bda..7fbf2bda 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__58.png
+++ b/data/points/COIL_database/images/asian mug/obj12__58.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__59.png b/data/points/COIL_database/images/asian mug/obj12__59.png
index b7d87fb0..b7d87fb0 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__59.png
+++ b/data/points/COIL_database/images/asian mug/obj12__59.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__6.png b/data/points/COIL_database/images/asian mug/obj12__6.png
index c49f4462..c49f4462 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__6.png
+++ b/data/points/COIL_database/images/asian mug/obj12__6.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__60.png b/data/points/COIL_database/images/asian mug/obj12__60.png
index 68188277..68188277 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__60.png
+++ b/data/points/COIL_database/images/asian mug/obj12__60.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__61.png b/data/points/COIL_database/images/asian mug/obj12__61.png
index ff308aef..ff308aef 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__61.png
+++ b/data/points/COIL_database/images/asian mug/obj12__61.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__62.png b/data/points/COIL_database/images/asian mug/obj12__62.png
index 184b1f06..184b1f06 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__62.png
+++ b/data/points/COIL_database/images/asian mug/obj12__62.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__63.png b/data/points/COIL_database/images/asian mug/obj12__63.png
index 78742130..78742130 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__63.png
+++ b/data/points/COIL_database/images/asian mug/obj12__63.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__64.png b/data/points/COIL_database/images/asian mug/obj12__64.png
index 0e2178c3..0e2178c3 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__64.png
+++ b/data/points/COIL_database/images/asian mug/obj12__64.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__65.png b/data/points/COIL_database/images/asian mug/obj12__65.png
index 78a4baed..78a4baed 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__65.png
+++ b/data/points/COIL_database/images/asian mug/obj12__65.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__66.png b/data/points/COIL_database/images/asian mug/obj12__66.png
index 0ac96479..0ac96479 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__66.png
+++ b/data/points/COIL_database/images/asian mug/obj12__66.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__67.png b/data/points/COIL_database/images/asian mug/obj12__67.png
index a3a0ea03..a3a0ea03 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__67.png
+++ b/data/points/COIL_database/images/asian mug/obj12__67.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__68.png b/data/points/COIL_database/images/asian mug/obj12__68.png
index 9d26c431..9d26c431 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__68.png
+++ b/data/points/COIL_database/images/asian mug/obj12__68.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__69.png b/data/points/COIL_database/images/asian mug/obj12__69.png
index dd97b204..dd97b204 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__69.png
+++ b/data/points/COIL_database/images/asian mug/obj12__69.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__7.png b/data/points/COIL_database/images/asian mug/obj12__7.png
index 0c01e6d5..0c01e6d5 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__7.png
+++ b/data/points/COIL_database/images/asian mug/obj12__7.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__70.png b/data/points/COIL_database/images/asian mug/obj12__70.png
index a791d36a..a791d36a 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__70.png
+++ b/data/points/COIL_database/images/asian mug/obj12__70.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__71.png b/data/points/COIL_database/images/asian mug/obj12__71.png
index 739cc06b..739cc06b 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__71.png
+++ b/data/points/COIL_database/images/asian mug/obj12__71.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__8.png b/data/points/COIL_database/images/asian mug/obj12__8.png
index 02d721b4..02d721b4 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__8.png
+++ b/data/points/COIL_database/images/asian mug/obj12__8.png
Binary files differ
diff --git a/data/points/COIL_database/images/asian mug/obj12__9.png b/data/points/COIL_database/images/asian mug/obj12__9.png
index d54ea9ff..d54ea9ff 100755..100644
--- a/data/points/COIL_database/images/asian mug/obj12__9.png
+++ b/data/points/COIL_database/images/asian mug/obj12__9.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__0.png b/data/points/COIL_database/images/little car/obj3__0.png
index c0e60889..c0e60889 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__0.png
+++ b/data/points/COIL_database/images/little car/obj3__0.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__1.png b/data/points/COIL_database/images/little car/obj3__1.png
index 0addb36b..0addb36b 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__1.png
+++ b/data/points/COIL_database/images/little car/obj3__1.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__10.png b/data/points/COIL_database/images/little car/obj3__10.png
index 357362de..357362de 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__10.png
+++ b/data/points/COIL_database/images/little car/obj3__10.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__11.png b/data/points/COIL_database/images/little car/obj3__11.png
index 701588cd..701588cd 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__11.png
+++ b/data/points/COIL_database/images/little car/obj3__11.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__12.png b/data/points/COIL_database/images/little car/obj3__12.png
index 14ac602a..14ac602a 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__12.png
+++ b/data/points/COIL_database/images/little car/obj3__12.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__13.png b/data/points/COIL_database/images/little car/obj3__13.png
index eb162414..eb162414 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__13.png
+++ b/data/points/COIL_database/images/little car/obj3__13.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__14.png b/data/points/COIL_database/images/little car/obj3__14.png
index 8df1d931..8df1d931 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__14.png
+++ b/data/points/COIL_database/images/little car/obj3__14.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__15.png b/data/points/COIL_database/images/little car/obj3__15.png
index a29ac360..a29ac360 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__15.png
+++ b/data/points/COIL_database/images/little car/obj3__15.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__16.png b/data/points/COIL_database/images/little car/obj3__16.png
index 12fda4e9..12fda4e9 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__16.png
+++ b/data/points/COIL_database/images/little car/obj3__16.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__17.png b/data/points/COIL_database/images/little car/obj3__17.png
index a8bfe2e1..a8bfe2e1 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__17.png
+++ b/data/points/COIL_database/images/little car/obj3__17.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__18.png b/data/points/COIL_database/images/little car/obj3__18.png
index 8a329194..8a329194 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__18.png
+++ b/data/points/COIL_database/images/little car/obj3__18.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__19.png b/data/points/COIL_database/images/little car/obj3__19.png
index 591b2c9c..591b2c9c 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__19.png
+++ b/data/points/COIL_database/images/little car/obj3__19.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__2.png b/data/points/COIL_database/images/little car/obj3__2.png
index e9979aa8..e9979aa8 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__2.png
+++ b/data/points/COIL_database/images/little car/obj3__2.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__20.png b/data/points/COIL_database/images/little car/obj3__20.png
index 2b804725..2b804725 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__20.png
+++ b/data/points/COIL_database/images/little car/obj3__20.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__21.png b/data/points/COIL_database/images/little car/obj3__21.png
index d6d71cac..d6d71cac 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__21.png
+++ b/data/points/COIL_database/images/little car/obj3__21.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__22.png b/data/points/COIL_database/images/little car/obj3__22.png
index 40a6d707..40a6d707 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__22.png
+++ b/data/points/COIL_database/images/little car/obj3__22.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__23.png b/data/points/COIL_database/images/little car/obj3__23.png
index 8ef3acfc..8ef3acfc 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__23.png
+++ b/data/points/COIL_database/images/little car/obj3__23.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__24.png b/data/points/COIL_database/images/little car/obj3__24.png
index 0b2d2d36..0b2d2d36 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__24.png
+++ b/data/points/COIL_database/images/little car/obj3__24.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__25.png b/data/points/COIL_database/images/little car/obj3__25.png
index 6d40218f..6d40218f 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__25.png
+++ b/data/points/COIL_database/images/little car/obj3__25.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__26.png b/data/points/COIL_database/images/little car/obj3__26.png
index 2850d83b..2850d83b 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__26.png
+++ b/data/points/COIL_database/images/little car/obj3__26.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__27.png b/data/points/COIL_database/images/little car/obj3__27.png
index 9e0ab4b7..9e0ab4b7 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__27.png
+++ b/data/points/COIL_database/images/little car/obj3__27.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__28.png b/data/points/COIL_database/images/little car/obj3__28.png
index 2a9559c6..2a9559c6 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__28.png
+++ b/data/points/COIL_database/images/little car/obj3__28.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__29.png b/data/points/COIL_database/images/little car/obj3__29.png
index fc312951..fc312951 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__29.png
+++ b/data/points/COIL_database/images/little car/obj3__29.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__3.png b/data/points/COIL_database/images/little car/obj3__3.png
index d85dfcf3..d85dfcf3 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__3.png
+++ b/data/points/COIL_database/images/little car/obj3__3.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__30.png b/data/points/COIL_database/images/little car/obj3__30.png
index c898dada..c898dada 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__30.png
+++ b/data/points/COIL_database/images/little car/obj3__30.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__31.png b/data/points/COIL_database/images/little car/obj3__31.png
index 35596130..35596130 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__31.png
+++ b/data/points/COIL_database/images/little car/obj3__31.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__32.png b/data/points/COIL_database/images/little car/obj3__32.png
index 476990f0..476990f0 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__32.png
+++ b/data/points/COIL_database/images/little car/obj3__32.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__33.png b/data/points/COIL_database/images/little car/obj3__33.png
index 6e40c8ff..6e40c8ff 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__33.png
+++ b/data/points/COIL_database/images/little car/obj3__33.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__34.png b/data/points/COIL_database/images/little car/obj3__34.png
index 842fb9c8..842fb9c8 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__34.png
+++ b/data/points/COIL_database/images/little car/obj3__34.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__35.png b/data/points/COIL_database/images/little car/obj3__35.png
index 8eb2fefe..8eb2fefe 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__35.png
+++ b/data/points/COIL_database/images/little car/obj3__35.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__36.png b/data/points/COIL_database/images/little car/obj3__36.png
index c0fe2be6..c0fe2be6 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__36.png
+++ b/data/points/COIL_database/images/little car/obj3__36.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__37.png b/data/points/COIL_database/images/little car/obj3__37.png
index 8d36e234..8d36e234 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__37.png
+++ b/data/points/COIL_database/images/little car/obj3__37.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__38.png b/data/points/COIL_database/images/little car/obj3__38.png
index 5f3e18b3..5f3e18b3 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__38.png
+++ b/data/points/COIL_database/images/little car/obj3__38.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__39.png b/data/points/COIL_database/images/little car/obj3__39.png
index f37d7758..f37d7758 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__39.png
+++ b/data/points/COIL_database/images/little car/obj3__39.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__4.png b/data/points/COIL_database/images/little car/obj3__4.png
index db88ac72..db88ac72 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__4.png
+++ b/data/points/COIL_database/images/little car/obj3__4.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__40.png b/data/points/COIL_database/images/little car/obj3__40.png
index 027bf398..027bf398 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__40.png
+++ b/data/points/COIL_database/images/little car/obj3__40.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__41.png b/data/points/COIL_database/images/little car/obj3__41.png
index f5a8940c..f5a8940c 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__41.png
+++ b/data/points/COIL_database/images/little car/obj3__41.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__42.png b/data/points/COIL_database/images/little car/obj3__42.png
index de8d09e6..de8d09e6 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__42.png
+++ b/data/points/COIL_database/images/little car/obj3__42.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__43.png b/data/points/COIL_database/images/little car/obj3__43.png
index ddb4452a..ddb4452a 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__43.png
+++ b/data/points/COIL_database/images/little car/obj3__43.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__44.png b/data/points/COIL_database/images/little car/obj3__44.png
index 241b46ce..241b46ce 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__44.png
+++ b/data/points/COIL_database/images/little car/obj3__44.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__45.png b/data/points/COIL_database/images/little car/obj3__45.png
index 5ed91f2a..5ed91f2a 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__45.png
+++ b/data/points/COIL_database/images/little car/obj3__45.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__46.png b/data/points/COIL_database/images/little car/obj3__46.png
index 9194cad0..9194cad0 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__46.png
+++ b/data/points/COIL_database/images/little car/obj3__46.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__47.png b/data/points/COIL_database/images/little car/obj3__47.png
index 5a0a161f..5a0a161f 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__47.png
+++ b/data/points/COIL_database/images/little car/obj3__47.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__48.png b/data/points/COIL_database/images/little car/obj3__48.png
index 6adb25ad..6adb25ad 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__48.png
+++ b/data/points/COIL_database/images/little car/obj3__48.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__49.png b/data/points/COIL_database/images/little car/obj3__49.png
index e4ceda7f..e4ceda7f 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__49.png
+++ b/data/points/COIL_database/images/little car/obj3__49.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__5.png b/data/points/COIL_database/images/little car/obj3__5.png
index 61498fdd..61498fdd 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__5.png
+++ b/data/points/COIL_database/images/little car/obj3__5.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__50.png b/data/points/COIL_database/images/little car/obj3__50.png
index 802a85c9..802a85c9 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__50.png
+++ b/data/points/COIL_database/images/little car/obj3__50.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__51.png b/data/points/COIL_database/images/little car/obj3__51.png
index d55e1d14..d55e1d14 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__51.png
+++ b/data/points/COIL_database/images/little car/obj3__51.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__52.png b/data/points/COIL_database/images/little car/obj3__52.png
index db83bd8c..db83bd8c 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__52.png
+++ b/data/points/COIL_database/images/little car/obj3__52.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__53.png b/data/points/COIL_database/images/little car/obj3__53.png
index a5065832..a5065832 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__53.png
+++ b/data/points/COIL_database/images/little car/obj3__53.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__54.png b/data/points/COIL_database/images/little car/obj3__54.png
index 1845ebdb..1845ebdb 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__54.png
+++ b/data/points/COIL_database/images/little car/obj3__54.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__55.png b/data/points/COIL_database/images/little car/obj3__55.png
index c0db9bec..c0db9bec 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__55.png
+++ b/data/points/COIL_database/images/little car/obj3__55.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__56.png b/data/points/COIL_database/images/little car/obj3__56.png
index 6444a1f4..6444a1f4 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__56.png
+++ b/data/points/COIL_database/images/little car/obj3__56.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__57.png b/data/points/COIL_database/images/little car/obj3__57.png
index 1531d701..1531d701 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__57.png
+++ b/data/points/COIL_database/images/little car/obj3__57.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__58.png b/data/points/COIL_database/images/little car/obj3__58.png
index 23a21786..23a21786 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__58.png
+++ b/data/points/COIL_database/images/little car/obj3__58.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__59.png b/data/points/COIL_database/images/little car/obj3__59.png
index bf85b274..bf85b274 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__59.png
+++ b/data/points/COIL_database/images/little car/obj3__59.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__6.png b/data/points/COIL_database/images/little car/obj3__6.png
index fb1b79e5..fb1b79e5 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__6.png
+++ b/data/points/COIL_database/images/little car/obj3__6.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__60.png b/data/points/COIL_database/images/little car/obj3__60.png
index a3ca1beb..a3ca1beb 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__60.png
+++ b/data/points/COIL_database/images/little car/obj3__60.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__61.png b/data/points/COIL_database/images/little car/obj3__61.png
index c76ef420..c76ef420 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__61.png
+++ b/data/points/COIL_database/images/little car/obj3__61.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__62.png b/data/points/COIL_database/images/little car/obj3__62.png
index 6d620f20..6d620f20 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__62.png
+++ b/data/points/COIL_database/images/little car/obj3__62.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__63.png b/data/points/COIL_database/images/little car/obj3__63.png
index 3ea0e4d8..3ea0e4d8 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__63.png
+++ b/data/points/COIL_database/images/little car/obj3__63.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__64.png b/data/points/COIL_database/images/little car/obj3__64.png
index eead8dfa..eead8dfa 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__64.png
+++ b/data/points/COIL_database/images/little car/obj3__64.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__65.png b/data/points/COIL_database/images/little car/obj3__65.png
index 3476cbc6..3476cbc6 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__65.png
+++ b/data/points/COIL_database/images/little car/obj3__65.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__66.png b/data/points/COIL_database/images/little car/obj3__66.png
index d4d02eee..d4d02eee 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__66.png
+++ b/data/points/COIL_database/images/little car/obj3__66.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__67.png b/data/points/COIL_database/images/little car/obj3__67.png
index d6f6390e..d6f6390e 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__67.png
+++ b/data/points/COIL_database/images/little car/obj3__67.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__68.png b/data/points/COIL_database/images/little car/obj3__68.png
index f14fe4f1..f14fe4f1 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__68.png
+++ b/data/points/COIL_database/images/little car/obj3__68.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__69.png b/data/points/COIL_database/images/little car/obj3__69.png
index 0cb85f63..0cb85f63 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__69.png
+++ b/data/points/COIL_database/images/little car/obj3__69.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__7.png b/data/points/COIL_database/images/little car/obj3__7.png
index 8630ad07..8630ad07 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__7.png
+++ b/data/points/COIL_database/images/little car/obj3__7.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__70.png b/data/points/COIL_database/images/little car/obj3__70.png
index a9d4b268..a9d4b268 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__70.png
+++ b/data/points/COIL_database/images/little car/obj3__70.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__71.png b/data/points/COIL_database/images/little car/obj3__71.png
index 108d8d1b..108d8d1b 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__71.png
+++ b/data/points/COIL_database/images/little car/obj3__71.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__8.png b/data/points/COIL_database/images/little car/obj3__8.png
index 86857d5e..86857d5e 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__8.png
+++ b/data/points/COIL_database/images/little car/obj3__8.png
Binary files differ
diff --git a/data/points/COIL_database/images/little car/obj3__9.png b/data/points/COIL_database/images/little car/obj3__9.png
index a71aaddb..a71aaddb 100755..100644
--- a/data/points/COIL_database/images/little car/obj3__9.png
+++ b/data/points/COIL_database/images/little car/obj3__9.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__0.png b/data/points/COIL_database/images/lucky cat/obj4__0.png
index ff874d3e..ff874d3e 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__0.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__0.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__1.png b/data/points/COIL_database/images/lucky cat/obj4__1.png
index 5eca4e00..5eca4e00 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__1.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__1.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__10.png b/data/points/COIL_database/images/lucky cat/obj4__10.png
index d1495175..d1495175 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__10.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__10.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__11.png b/data/points/COIL_database/images/lucky cat/obj4__11.png
index e061610d..e061610d 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__11.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__11.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__12.png b/data/points/COIL_database/images/lucky cat/obj4__12.png
index 4394d9c4..4394d9c4 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__12.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__12.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__13.png b/data/points/COIL_database/images/lucky cat/obj4__13.png
index 7ca2c89c..7ca2c89c 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__13.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__13.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__14.png b/data/points/COIL_database/images/lucky cat/obj4__14.png
index 1c4fae8b..1c4fae8b 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__14.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__14.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__15.png b/data/points/COIL_database/images/lucky cat/obj4__15.png
index a8c1f13f..a8c1f13f 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__15.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__15.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__16.png b/data/points/COIL_database/images/lucky cat/obj4__16.png
index 7ddaa507..7ddaa507 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__16.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__16.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__17.png b/data/points/COIL_database/images/lucky cat/obj4__17.png
index 417a62fe..417a62fe 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__17.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__17.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__18.png b/data/points/COIL_database/images/lucky cat/obj4__18.png
index 7af8ef0c..7af8ef0c 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__18.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__18.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__19.png b/data/points/COIL_database/images/lucky cat/obj4__19.png
index efe4e992..efe4e992 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__19.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__19.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__2.png b/data/points/COIL_database/images/lucky cat/obj4__2.png
index 6148787f..6148787f 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__2.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__2.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__20.png b/data/points/COIL_database/images/lucky cat/obj4__20.png
index edd9f2c9..edd9f2c9 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__20.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__20.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__21.png b/data/points/COIL_database/images/lucky cat/obj4__21.png
index 93c0447d..93c0447d 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__21.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__21.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__22.png b/data/points/COIL_database/images/lucky cat/obj4__22.png
index c3836121..c3836121 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__22.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__22.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__23.png b/data/points/COIL_database/images/lucky cat/obj4__23.png
index de488bb4..de488bb4 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__23.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__23.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__24.png b/data/points/COIL_database/images/lucky cat/obj4__24.png
index 585878c6..585878c6 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__24.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__24.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__25.png b/data/points/COIL_database/images/lucky cat/obj4__25.png
index 7dbc21be..7dbc21be 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__25.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__25.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__26.png b/data/points/COIL_database/images/lucky cat/obj4__26.png
index 03da4c47..03da4c47 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__26.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__26.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__27.png b/data/points/COIL_database/images/lucky cat/obj4__27.png
index d57e6e3e..d57e6e3e 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__27.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__27.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__28.png b/data/points/COIL_database/images/lucky cat/obj4__28.png
index aedb06bb..aedb06bb 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__28.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__28.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__29.png b/data/points/COIL_database/images/lucky cat/obj4__29.png
index 0db062ec..0db062ec 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__29.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__29.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__3.png b/data/points/COIL_database/images/lucky cat/obj4__3.png
index 6797caae..6797caae 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__3.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__3.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__30.png b/data/points/COIL_database/images/lucky cat/obj4__30.png
index dd498573..dd498573 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__30.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__30.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__31.png b/data/points/COIL_database/images/lucky cat/obj4__31.png
index 87df2769..87df2769 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__31.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__31.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__32.png b/data/points/COIL_database/images/lucky cat/obj4__32.png
index 94af5ef3..94af5ef3 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__32.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__32.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__33.png b/data/points/COIL_database/images/lucky cat/obj4__33.png
index 239581d5..239581d5 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__33.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__33.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__34.png b/data/points/COIL_database/images/lucky cat/obj4__34.png
index 4ca299ee..4ca299ee 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__34.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__34.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__35.png b/data/points/COIL_database/images/lucky cat/obj4__35.png
index ba95aef4..ba95aef4 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__35.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__35.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__36.png b/data/points/COIL_database/images/lucky cat/obj4__36.png
index d5b80e1a..d5b80e1a 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__36.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__36.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__37.png b/data/points/COIL_database/images/lucky cat/obj4__37.png
index e940a2fd..e940a2fd 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__37.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__37.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__38.png b/data/points/COIL_database/images/lucky cat/obj4__38.png
index 1da47bc0..1da47bc0 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__38.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__38.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__39.png b/data/points/COIL_database/images/lucky cat/obj4__39.png
index 7ee6c9f9..7ee6c9f9 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__39.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__39.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__4.png b/data/points/COIL_database/images/lucky cat/obj4__4.png
index 7e6182c4..7e6182c4 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__4.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__4.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__40.png b/data/points/COIL_database/images/lucky cat/obj4__40.png
index d2529b59..d2529b59 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__40.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__40.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__41.png b/data/points/COIL_database/images/lucky cat/obj4__41.png
index ce1b7093..ce1b7093 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__41.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__41.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__42.png b/data/points/COIL_database/images/lucky cat/obj4__42.png
index 4ba64574..4ba64574 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__42.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__42.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__43.png b/data/points/COIL_database/images/lucky cat/obj4__43.png
index a0f5b8f4..a0f5b8f4 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__43.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__43.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__44.png b/data/points/COIL_database/images/lucky cat/obj4__44.png
index 36a0aa8d..36a0aa8d 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__44.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__44.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__45.png b/data/points/COIL_database/images/lucky cat/obj4__45.png
index 2c6ace8d..2c6ace8d 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__45.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__45.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__46.png b/data/points/COIL_database/images/lucky cat/obj4__46.png
index f06f423b..f06f423b 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__46.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__46.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__47.png b/data/points/COIL_database/images/lucky cat/obj4__47.png
index 8591b0a6..8591b0a6 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__47.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__47.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__48.png b/data/points/COIL_database/images/lucky cat/obj4__48.png
index 37ba4167..37ba4167 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__48.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__48.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__49.png b/data/points/COIL_database/images/lucky cat/obj4__49.png
index 1dc4483c..1dc4483c 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__49.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__49.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__50.png b/data/points/COIL_database/images/lucky cat/obj4__50.png
index d41be68b..d41be68b 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__50.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__50.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__51.png b/data/points/COIL_database/images/lucky cat/obj4__51.png
index 12ba90ed..12ba90ed 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__51.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__51.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__52.png b/data/points/COIL_database/images/lucky cat/obj4__52.png
index 04058abd..04058abd 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__52.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__52.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__53.png b/data/points/COIL_database/images/lucky cat/obj4__53.png
index c7d6d02a..c7d6d02a 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__53.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__53.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__54.png b/data/points/COIL_database/images/lucky cat/obj4__54.png
index b1e22cfa..b1e22cfa 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__54.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__54.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__55.png b/data/points/COIL_database/images/lucky cat/obj4__55.png
index dea5770f..dea5770f 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__55.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__55.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__56.png b/data/points/COIL_database/images/lucky cat/obj4__56.png
index f1acf69d..f1acf69d 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__56.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__56.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__57.png b/data/points/COIL_database/images/lucky cat/obj4__57.png
index 88a0ab16..88a0ab16 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__57.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__57.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__58.png b/data/points/COIL_database/images/lucky cat/obj4__58.png
index 18f4d10e..18f4d10e 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__58.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__58.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__59.png b/data/points/COIL_database/images/lucky cat/obj4__59.png
index ee7f3b81..ee7f3b81 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__59.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__59.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__6.png b/data/points/COIL_database/images/lucky cat/obj4__6.png
index 69f4e861..69f4e861 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__6.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__6.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__60.png b/data/points/COIL_database/images/lucky cat/obj4__60.png
index 1a2a32b6..1a2a32b6 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__60.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__60.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__61.png b/data/points/COIL_database/images/lucky cat/obj4__61.png
index bc85f8f8..bc85f8f8 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__61.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__61.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__62.png b/data/points/COIL_database/images/lucky cat/obj4__62.png
index 2da189bb..2da189bb 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__62.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__62.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__63.png b/data/points/COIL_database/images/lucky cat/obj4__63.png
index 4c13ce00..4c13ce00 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__63.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__63.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__64.png b/data/points/COIL_database/images/lucky cat/obj4__64.png
index ee6d8e02..ee6d8e02 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__64.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__64.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__65.png b/data/points/COIL_database/images/lucky cat/obj4__65.png
index a353c06c..a353c06c 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__65.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__65.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__66.png b/data/points/COIL_database/images/lucky cat/obj4__66.png
index 6bfd49f5..6bfd49f5 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__66.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__66.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__67.png b/data/points/COIL_database/images/lucky cat/obj4__67.png
index 0999d86b..0999d86b 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__67.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__67.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__68.png b/data/points/COIL_database/images/lucky cat/obj4__68.png
index 381d9c3c..381d9c3c 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__68.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__68.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__69.png b/data/points/COIL_database/images/lucky cat/obj4__69.png
index 7a1eab1a..7a1eab1a 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__69.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__69.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__7.png b/data/points/COIL_database/images/lucky cat/obj4__7.png
index 54b788b6..54b788b6 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__7.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__7.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__70.png b/data/points/COIL_database/images/lucky cat/obj4__70.png
index 380e3859..380e3859 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__70.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__70.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__71.png b/data/points/COIL_database/images/lucky cat/obj4__71.png
index f93c3ead..f93c3ead 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__71.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__71.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__8.png b/data/points/COIL_database/images/lucky cat/obj4__8.png
index cb4ccfa0..cb4ccfa0 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__8.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__8.png
Binary files differ
diff --git a/data/points/COIL_database/images/lucky cat/obj4__9.png b/data/points/COIL_database/images/lucky cat/obj4__9.png
index 4881ec2d..4881ec2d 100755..100644
--- a/data/points/COIL_database/images/lucky cat/obj4__9.png
+++ b/data/points/COIL_database/images/lucky cat/obj4__9.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__0.png b/data/points/COIL_database/images/money pig/obj13__0.png
index 79b4d2dd..79b4d2dd 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__0.png
+++ b/data/points/COIL_database/images/money pig/obj13__0.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__1.png b/data/points/COIL_database/images/money pig/obj13__1.png
index 9f37fc0d..9f37fc0d 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__1.png
+++ b/data/points/COIL_database/images/money pig/obj13__1.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__10.png b/data/points/COIL_database/images/money pig/obj13__10.png
index 9d4c399d..9d4c399d 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__10.png
+++ b/data/points/COIL_database/images/money pig/obj13__10.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__11.png b/data/points/COIL_database/images/money pig/obj13__11.png
index f9122c7e..f9122c7e 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__11.png
+++ b/data/points/COIL_database/images/money pig/obj13__11.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__12.png b/data/points/COIL_database/images/money pig/obj13__12.png
index 903b0fa2..903b0fa2 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__12.png
+++ b/data/points/COIL_database/images/money pig/obj13__12.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__13.png b/data/points/COIL_database/images/money pig/obj13__13.png
index 3862e98a..3862e98a 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__13.png
+++ b/data/points/COIL_database/images/money pig/obj13__13.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__14.png b/data/points/COIL_database/images/money pig/obj13__14.png
index fb52d5a7..fb52d5a7 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__14.png
+++ b/data/points/COIL_database/images/money pig/obj13__14.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__15.png b/data/points/COIL_database/images/money pig/obj13__15.png
index 418686c6..418686c6 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__15.png
+++ b/data/points/COIL_database/images/money pig/obj13__15.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__16.png b/data/points/COIL_database/images/money pig/obj13__16.png
index 8c120be1..8c120be1 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__16.png
+++ b/data/points/COIL_database/images/money pig/obj13__16.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__17.png b/data/points/COIL_database/images/money pig/obj13__17.png
index d06e1cd7..d06e1cd7 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__17.png
+++ b/data/points/COIL_database/images/money pig/obj13__17.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__18.png b/data/points/COIL_database/images/money pig/obj13__18.png
index 0c94b6d6..0c94b6d6 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__18.png
+++ b/data/points/COIL_database/images/money pig/obj13__18.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__19.png b/data/points/COIL_database/images/money pig/obj13__19.png
index 81c53e3d..81c53e3d 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__19.png
+++ b/data/points/COIL_database/images/money pig/obj13__19.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__2.png b/data/points/COIL_database/images/money pig/obj13__2.png
index fd81df13..fd81df13 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__2.png
+++ b/data/points/COIL_database/images/money pig/obj13__2.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__20.png b/data/points/COIL_database/images/money pig/obj13__20.png
index 9b402f18..9b402f18 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__20.png
+++ b/data/points/COIL_database/images/money pig/obj13__20.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__21.png b/data/points/COIL_database/images/money pig/obj13__21.png
index 9124d2ee..9124d2ee 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__21.png
+++ b/data/points/COIL_database/images/money pig/obj13__21.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__22.png b/data/points/COIL_database/images/money pig/obj13__22.png
index 3bb3acd5..3bb3acd5 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__22.png
+++ b/data/points/COIL_database/images/money pig/obj13__22.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__23.png b/data/points/COIL_database/images/money pig/obj13__23.png
index 124cf765..124cf765 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__23.png
+++ b/data/points/COIL_database/images/money pig/obj13__23.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__24.png b/data/points/COIL_database/images/money pig/obj13__24.png
index be8724ec..be8724ec 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__24.png
+++ b/data/points/COIL_database/images/money pig/obj13__24.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__25.png b/data/points/COIL_database/images/money pig/obj13__25.png
index 1b12d8a9..1b12d8a9 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__25.png
+++ b/data/points/COIL_database/images/money pig/obj13__25.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__26.png b/data/points/COIL_database/images/money pig/obj13__26.png
index da5e58ce..da5e58ce 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__26.png
+++ b/data/points/COIL_database/images/money pig/obj13__26.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__27.png b/data/points/COIL_database/images/money pig/obj13__27.png
index b25c9b05..b25c9b05 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__27.png
+++ b/data/points/COIL_database/images/money pig/obj13__27.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__28.png b/data/points/COIL_database/images/money pig/obj13__28.png
index fcc4b6bb..fcc4b6bb 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__28.png
+++ b/data/points/COIL_database/images/money pig/obj13__28.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__29.png b/data/points/COIL_database/images/money pig/obj13__29.png
index b7a646bc..b7a646bc 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__29.png
+++ b/data/points/COIL_database/images/money pig/obj13__29.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__3.png b/data/points/COIL_database/images/money pig/obj13__3.png
index 5da5acae..5da5acae 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__3.png
+++ b/data/points/COIL_database/images/money pig/obj13__3.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__30.png b/data/points/COIL_database/images/money pig/obj13__30.png
index 79ff0d69..79ff0d69 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__30.png
+++ b/data/points/COIL_database/images/money pig/obj13__30.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__31.png b/data/points/COIL_database/images/money pig/obj13__31.png
index 6f5dfdd0..6f5dfdd0 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__31.png
+++ b/data/points/COIL_database/images/money pig/obj13__31.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__32.png b/data/points/COIL_database/images/money pig/obj13__32.png
index bf828c5a..bf828c5a 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__32.png
+++ b/data/points/COIL_database/images/money pig/obj13__32.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__33.png b/data/points/COIL_database/images/money pig/obj13__33.png
index 76235e64..76235e64 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__33.png
+++ b/data/points/COIL_database/images/money pig/obj13__33.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__34.png b/data/points/COIL_database/images/money pig/obj13__34.png
index eb870a3c..eb870a3c 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__34.png
+++ b/data/points/COIL_database/images/money pig/obj13__34.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__35.png b/data/points/COIL_database/images/money pig/obj13__35.png
index 328a2b4c..328a2b4c 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__35.png
+++ b/data/points/COIL_database/images/money pig/obj13__35.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__36.png b/data/points/COIL_database/images/money pig/obj13__36.png
index add58bb8..add58bb8 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__36.png
+++ b/data/points/COIL_database/images/money pig/obj13__36.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__37.png b/data/points/COIL_database/images/money pig/obj13__37.png
index dd7804d0..dd7804d0 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__37.png
+++ b/data/points/COIL_database/images/money pig/obj13__37.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__38.png b/data/points/COIL_database/images/money pig/obj13__38.png
index 28034b0f..28034b0f 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__38.png
+++ b/data/points/COIL_database/images/money pig/obj13__38.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__39.png b/data/points/COIL_database/images/money pig/obj13__39.png
index 2344a060..2344a060 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__39.png
+++ b/data/points/COIL_database/images/money pig/obj13__39.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__4.png b/data/points/COIL_database/images/money pig/obj13__4.png
index 2546b4fe..2546b4fe 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__4.png
+++ b/data/points/COIL_database/images/money pig/obj13__4.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__40.png b/data/points/COIL_database/images/money pig/obj13__40.png
index 11a27474..11a27474 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__40.png
+++ b/data/points/COIL_database/images/money pig/obj13__40.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__41.png b/data/points/COIL_database/images/money pig/obj13__41.png
index 8402ffe2..8402ffe2 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__41.png
+++ b/data/points/COIL_database/images/money pig/obj13__41.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__42.png b/data/points/COIL_database/images/money pig/obj13__42.png
index e4c3dc5d..e4c3dc5d 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__42.png
+++ b/data/points/COIL_database/images/money pig/obj13__42.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__43.png b/data/points/COIL_database/images/money pig/obj13__43.png
index 1df2c809..1df2c809 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__43.png
+++ b/data/points/COIL_database/images/money pig/obj13__43.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__44.png b/data/points/COIL_database/images/money pig/obj13__44.png
index 1962650d..1962650d 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__44.png
+++ b/data/points/COIL_database/images/money pig/obj13__44.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__45.png b/data/points/COIL_database/images/money pig/obj13__45.png
index 13367c88..13367c88 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__45.png
+++ b/data/points/COIL_database/images/money pig/obj13__45.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__46.png b/data/points/COIL_database/images/money pig/obj13__46.png
index 7c35654b..7c35654b 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__46.png
+++ b/data/points/COIL_database/images/money pig/obj13__46.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__47.png b/data/points/COIL_database/images/money pig/obj13__47.png
index eea56f6b..eea56f6b 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__47.png
+++ b/data/points/COIL_database/images/money pig/obj13__47.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__48.png b/data/points/COIL_database/images/money pig/obj13__48.png
index 7b721615..7b721615 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__48.png
+++ b/data/points/COIL_database/images/money pig/obj13__48.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__49.png b/data/points/COIL_database/images/money pig/obj13__49.png
index babbff81..babbff81 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__49.png
+++ b/data/points/COIL_database/images/money pig/obj13__49.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__5.png b/data/points/COIL_database/images/money pig/obj13__5.png
index b7a30479..b7a30479 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__5.png
+++ b/data/points/COIL_database/images/money pig/obj13__5.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__50.png b/data/points/COIL_database/images/money pig/obj13__50.png
index 83b831a4..83b831a4 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__50.png
+++ b/data/points/COIL_database/images/money pig/obj13__50.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__51.png b/data/points/COIL_database/images/money pig/obj13__51.png
index 63af5d96..63af5d96 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__51.png
+++ b/data/points/COIL_database/images/money pig/obj13__51.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__52.png b/data/points/COIL_database/images/money pig/obj13__52.png
index 5ee92b85..5ee92b85 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__52.png
+++ b/data/points/COIL_database/images/money pig/obj13__52.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__53.png b/data/points/COIL_database/images/money pig/obj13__53.png
index 12b418de..12b418de 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__53.png
+++ b/data/points/COIL_database/images/money pig/obj13__53.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__54.png b/data/points/COIL_database/images/money pig/obj13__54.png
index 8a217df3..8a217df3 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__54.png
+++ b/data/points/COIL_database/images/money pig/obj13__54.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__55.png b/data/points/COIL_database/images/money pig/obj13__55.png
index 08a492b4..08a492b4 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__55.png
+++ b/data/points/COIL_database/images/money pig/obj13__55.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__56.png b/data/points/COIL_database/images/money pig/obj13__56.png
index c2c31c4f..c2c31c4f 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__56.png
+++ b/data/points/COIL_database/images/money pig/obj13__56.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__57.png b/data/points/COIL_database/images/money pig/obj13__57.png
index ffb62d35..ffb62d35 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__57.png
+++ b/data/points/COIL_database/images/money pig/obj13__57.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__58.png b/data/points/COIL_database/images/money pig/obj13__58.png
index fadce354..fadce354 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__58.png
+++ b/data/points/COIL_database/images/money pig/obj13__58.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__59.png b/data/points/COIL_database/images/money pig/obj13__59.png
index 7c2075a2..7c2075a2 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__59.png
+++ b/data/points/COIL_database/images/money pig/obj13__59.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__6.png b/data/points/COIL_database/images/money pig/obj13__6.png
index f5a5d1b4..f5a5d1b4 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__6.png
+++ b/data/points/COIL_database/images/money pig/obj13__6.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__60.png b/data/points/COIL_database/images/money pig/obj13__60.png
index fc9d81e4..fc9d81e4 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__60.png
+++ b/data/points/COIL_database/images/money pig/obj13__60.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__61.png b/data/points/COIL_database/images/money pig/obj13__61.png
index b60c31cf..b60c31cf 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__61.png
+++ b/data/points/COIL_database/images/money pig/obj13__61.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__62.png b/data/points/COIL_database/images/money pig/obj13__62.png
index 42f1b0ff..42f1b0ff 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__62.png
+++ b/data/points/COIL_database/images/money pig/obj13__62.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__63.png b/data/points/COIL_database/images/money pig/obj13__63.png
index 05164aeb..05164aeb 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__63.png
+++ b/data/points/COIL_database/images/money pig/obj13__63.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__64.png b/data/points/COIL_database/images/money pig/obj13__64.png
index 6384ed8d..6384ed8d 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__64.png
+++ b/data/points/COIL_database/images/money pig/obj13__64.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__65.png b/data/points/COIL_database/images/money pig/obj13__65.png
index dd7d0b2b..dd7d0b2b 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__65.png
+++ b/data/points/COIL_database/images/money pig/obj13__65.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__66.png b/data/points/COIL_database/images/money pig/obj13__66.png
index 517c2dfa..517c2dfa 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__66.png
+++ b/data/points/COIL_database/images/money pig/obj13__66.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__67.png b/data/points/COIL_database/images/money pig/obj13__67.png
index d672e0c0..d672e0c0 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__67.png
+++ b/data/points/COIL_database/images/money pig/obj13__67.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__68.png b/data/points/COIL_database/images/money pig/obj13__68.png
index dce1c0aa..dce1c0aa 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__68.png
+++ b/data/points/COIL_database/images/money pig/obj13__68.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__69.png b/data/points/COIL_database/images/money pig/obj13__69.png
index a39e05f8..a39e05f8 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__69.png
+++ b/data/points/COIL_database/images/money pig/obj13__69.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__7.png b/data/points/COIL_database/images/money pig/obj13__7.png
index dea00fee..dea00fee 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__7.png
+++ b/data/points/COIL_database/images/money pig/obj13__7.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__70.png b/data/points/COIL_database/images/money pig/obj13__70.png
index 32f86cdd..32f86cdd 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__70.png
+++ b/data/points/COIL_database/images/money pig/obj13__70.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__71.png b/data/points/COIL_database/images/money pig/obj13__71.png
index ee26c5a9..ee26c5a9 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__71.png
+++ b/data/points/COIL_database/images/money pig/obj13__71.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__8.png b/data/points/COIL_database/images/money pig/obj13__8.png
index 6ffa666d..6ffa666d 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__8.png
+++ b/data/points/COIL_database/images/money pig/obj13__8.png
Binary files differ
diff --git a/data/points/COIL_database/images/money pig/obj13__9.png b/data/points/COIL_database/images/money pig/obj13__9.png
index ab971710..ab971710 100755..100644
--- a/data/points/COIL_database/images/money pig/obj13__9.png
+++ b/data/points/COIL_database/images/money pig/obj13__9.png
Binary files differ
diff --git a/data/points/COIL_database/little_car.off b/data/points/COIL_database/little_car.off
index 056c56db..056c56db 100755..100644
--- a/data/points/COIL_database/little_car.off
+++ b/data/points/COIL_database/little_car.off
diff --git a/data/points/COIL_database/lucky_cat.off b/data/points/COIL_database/lucky_cat.off
index 35ac5fc5..35ac5fc5 100755..100644
--- a/data/points/COIL_database/lucky_cat.off
+++ b/data/points/COIL_database/lucky_cat.off
diff --git a/data/points/COIL_database/money_pig.off b/data/points/COIL_database/money_pig.off
index 5acb05dd..5acb05dd 100755..100644
--- a/data/points/COIL_database/money_pig.off
+++ b/data/points/COIL_database/money_pig.off
diff --git a/data/points/SO3_10000.off b/data/points/SO3_10000.off
index fbf9b273..fbf9b273 100755..100644
--- a/data/points/SO3_10000.off
+++ b/data/points/SO3_10000.off
diff --git a/data/points/SO3_50000.off b/data/points/SO3_50000.off
index 635e8988..635e8988 100755..100644
--- a/data/points/SO3_50000.off
+++ b/data/points/SO3_50000.off
diff --git a/data/points/sphere3D_2646.off b/data/points/sphere3D_2646.off
index 8035a0a6..8035a0a6 100755..100644
--- a/data/points/sphere3D_2646.off
+++ b/data/points/sphere3D_2646.off
diff --git a/data/points/tore3D_1307.off b/data/points/tore3D_1307.off
index e214ac4b..e214ac4b 100755..100644
--- a/data/points/tore3D_1307.off
+++ b/data/points/tore3D_1307.off
diff --git a/scripts/check_code_coverage.sh b/scripts/check_code_coverage.sh
deleted file mode 100755
index ef4aeb76..00000000
--- a/scripts/check_code_coverage.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-#usage bash check_google_style.sh
-
-# UNITARY TEST DIRECTORY CHECK
-ROOT_DIR=..
-UT_DIR_TO_CHECK="$1"
-LCOV_DIR=$UT_DIR_TO_CHECK/lcov
-COVERAGE_FILE=$LCOV_DIR/coverage.info
-LOG_FILE=$LCOV_DIR/coverage.log
-MIN_PERCENT=86
-
-rm -rf $LCOV_DIR
-mkdir $LCOV_DIR
-
-lcov --capture --directory $UT_DIR_TO_CHECK --no-external --output-file $COVERAGE_FILE 2>&1 | tee -a $LOG_FILE
-lcov --summary $COVERAGE_FILE 2>&1 | tee -a $LOG_FILE
-genhtml $COVERAGE_FILE --output-directory $UT_DIR_TO_CHECK/lcov
-# CLEAN AFTER USE
-lcov --directory $UT_DIR_TO_CHECK --zerocounters 2>&1 | tee -a $LOG_FILE
-
-LINE_PERCENTAGE=`grep "lines......:" $LOG_FILE`
-PERC_PER_LINE=${LINE_PERCENTAGE:14:3}
-
-if [ "$PERC_PER_LINE" -lt "$MIN_PERCENT" ]
-then
- echo "## Lines not enough covered ($PERC_PER_LINE) in $UT_DIR_TO_CHECK" 2>&1 | tee -a $LOG_FILE
- exit 1
-else
- FONC_PERCENTAGE=`grep "functions..:" $LOG_FILE`
- PERC_PER_FUNC=${FONC_PERCENTAGE:14:3}
-
- if [ "$PERC_PER_FUNC" -lt "$MIN_PERCENT" ]
- then
- echo "## Functions not enough covered ($PERC_PER_FUNC) in $UT_DIR_TO_CHECK" 2>&1 | tee -a $LOG_FILE
- exit 1
- fi
-fi
-
-echo "Acceptable coverage values (lines:$PERC_PER_LINE% - functions:$PERC_PER_FUNC%) in $UT_DIR_TO_CHECK" 2>&1 | tee -a $LOG_FILE
-exit 0
diff --git a/scripts/cpplint.py b/scripts/cpplint.py
index 217b7136..0e186e23 100644
--- a/scripts/cpplint.py
+++ b/scripts/cpplint.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
#
# Copyright (c) 2009 Google Inc. All rights reserved.
#
@@ -175,71 +175,77 @@ Syntax: cpplint.py [--verbose=#] [--output=vs7] [--filter=-x,+y,...]
# If you add a new error message with a new category, add it to the list
# here! cpplint_unittest.py should tell you if you forget to do this.
_ERROR_CATEGORIES = [
- 'build/class',
- 'build/c++11',
- 'build/deprecated',
- 'build/endif_comment',
- 'build/explicit_make_pair',
- 'build/forward_decl',
- 'build/header_guard',
- 'build/include',
- 'build/include_alpha',
- 'build/include_order',
- 'build/include_what_you_use',
- 'build/namespaces',
- 'build/printf_format',
- 'build/storage_class',
- 'legal/copyright',
- 'readability/alt_tokens',
- 'readability/braces',
- 'readability/casting',
- 'readability/check',
- 'readability/constructors',
- 'readability/fn_size',
- 'readability/function',
- 'readability/inheritance',
- 'readability/multiline_comment',
- 'readability/multiline_string',
- 'readability/namespace',
- 'readability/nolint',
- 'readability/nul',
- 'readability/streams',
- 'readability/todo',
- 'readability/utf8',
- 'runtime/arrays',
- 'runtime/casting',
- 'runtime/explicit',
- 'runtime/int',
- 'runtime/init',
- 'runtime/invalid_increment',
- 'runtime/member_string_references',
- 'runtime/memset',
- 'runtime/indentation_namespace',
- 'runtime/operator',
- 'runtime/printf',
- 'runtime/printf_format',
- 'runtime/references',
- 'runtime/string',
- 'runtime/threadsafe_fn',
- 'runtime/vlog',
- 'whitespace/blank_line',
- 'whitespace/braces',
- 'whitespace/comma',
- 'whitespace/comments',
- 'whitespace/empty_conditional_body',
- 'whitespace/empty_loop_body',
- 'whitespace/end_of_line',
- 'whitespace/ending_newline',
- 'whitespace/forcolon',
- 'whitespace/indent',
- 'whitespace/line_length',
- 'whitespace/newline',
- 'whitespace/operators',
- 'whitespace/parens',
- 'whitespace/semicolon',
- 'whitespace/tab',
- 'whitespace/todo'
- ]
+ 'build/class',
+ 'build/c++11',
+ 'build/deprecated',
+ 'build/endif_comment',
+ 'build/explicit_make_pair',
+ 'build/forward_decl',
+ 'build/header_guard',
+ 'build/include',
+ 'build/include_alpha',
+ 'build/include_order',
+ 'build/include_what_you_use',
+ 'build/namespaces',
+ 'build/printf_format',
+ 'build/storage_class',
+ 'legal/copyright',
+ 'readability/alt_tokens',
+ 'readability/braces',
+ 'readability/casting',
+ 'readability/check',
+ 'readability/constructors',
+ 'readability/fn_size',
+ 'readability/function',
+ 'readability/inheritance',
+ 'readability/multiline_comment',
+ 'readability/multiline_string',
+ 'readability/namespace',
+ 'readability/nolint',
+ 'readability/nul',
+ 'readability/strings',
+ 'readability/todo',
+ 'readability/utf8',
+ 'runtime/arrays',
+ 'runtime/casting',
+ 'runtime/explicit',
+ 'runtime/int',
+ 'runtime/init',
+ 'runtime/invalid_increment',
+ 'runtime/member_string_references',
+ 'runtime/memset',
+ 'runtime/indentation_namespace',
+ 'runtime/operator',
+ 'runtime/printf',
+ 'runtime/printf_format',
+ 'runtime/references',
+ 'runtime/string',
+ 'runtime/threadsafe_fn',
+ 'runtime/vlog',
+ 'whitespace/blank_line',
+ 'whitespace/braces',
+ 'whitespace/comma',
+ 'whitespace/comments',
+ 'whitespace/empty_conditional_body',
+ 'whitespace/empty_loop_body',
+ 'whitespace/end_of_line',
+ 'whitespace/ending_newline',
+ 'whitespace/forcolon',
+ 'whitespace/indent',
+ 'whitespace/line_length',
+ 'whitespace/newline',
+ 'whitespace/operators',
+ 'whitespace/parens',
+ 'whitespace/semicolon',
+ 'whitespace/tab',
+ 'whitespace/todo',
+ ]
+
+# These error categories are no longer enforced by cpplint, but for backwards-
+# compatibility they may still appear in NOLINT comments.
+_LEGACY_ERROR_CATEGORIES = [
+ 'readability/streams',
+ ]
# The default state of the category filter. This is overridden by the --filter=
# flag. By default all errors are on, so only add here categories that should be
@@ -522,7 +528,7 @@ def ParseNolintSuppressions(filename, raw_line, linenum, error):
category = category[1:-1]
if category in _ERROR_CATEGORIES:
_error_suppressions.setdefault(category, set()).add(suppressed_line)
- else:
+ elif category not in _LEGACY_ERROR_CATEGORIES:
error(filename, linenum, 'readability/nolint', 5,
'Unknown NOLINT error category: %s' % category)
@@ -690,7 +696,7 @@ class _IncludeState(object):
# If previous line was a blank line, assume that the headers are
# intentionally sorted the way they are.
if (self._last_header > header_path and
- not Match(r'^\s*$', clean_lines.elided[linenum - 1])):
+ Match(r'^\s*#\s*include\b', clean_lines.elided[linenum - 1])):
return False
return True
@@ -1246,7 +1252,7 @@ def RemoveMultiLineCommentsFromRange(lines, begin, end):
# Having // dummy comments makes the lines non-empty, so we will not get
# unnecessary blank line warnings later in the code.
for i in range(begin, end):
- lines[i] = '// dummy'
+ lines[i] = '/**/'
def RemoveMultiLineComments(filename, lines, error):
@@ -1282,12 +1288,14 @@ def CleanseComments(line):
class CleansedLines(object):
- """Holds 3 copies of all lines with different preprocessing applied to them.
+ """Holds 4 copies of all lines with different preprocessing applied to them.
- 1) elided member contains lines without strings and comments,
- 2) lines member contains lines without comments, and
+ 1) elided member contains lines without strings and comments.
+ 2) lines member contains lines without comments.
3) raw_lines member contains all the lines without processing.
- All these three members are of <type 'list'>, and of the same length.
+ 4) lines_without_raw_strings member is same as raw_lines, but with C++11 raw
+ strings removed.
+ All these members are of <type 'list'>, and of the same length.
"""
def __init__(self, lines):
@@ -1656,15 +1664,17 @@ def GetHeaderGuardCPPVariable(filename):
# flymake.
filename = re.sub(r'_flymake\.h$', '.h', filename)
filename = re.sub(r'/\.flymake/([^/]*)$', r'/\1', filename)
-
+ # Replace 'c++' with 'cpp'.
+ filename = filename.replace('C++', 'cpp').replace('c++', 'cpp')
+
fileinfo = FileInfo(filename)
file_path_from_root = fileinfo.RepositoryName()
if _root:
file_path_from_root = re.sub('^' + _root + os.sep, '', file_path_from_root)
- return re.sub(r'[-./\s]', '_', file_path_from_root).upper() + '_'
+ return re.sub(r'[^a-zA-Z0-9]', '_', file_path_from_root).upper() + '_'
-def CheckForHeaderGuard(filename, lines, error):
+def CheckForHeaderGuard(filename, clean_lines, error):
"""Checks that the file contains a header guard.
Logs an error if no #ifndef header guard is present. For other
@@ -1672,7 +1682,7 @@ def CheckForHeaderGuard(filename, lines, error):
Args:
filename: The name of the C++ header file.
- lines: An array of strings, each representing a line of the file.
+ clean_lines: A CleansedLines instance containing the file.
error: The function to call with any errors found.
"""
@@ -1682,18 +1692,19 @@ def CheckForHeaderGuard(filename, lines, error):
# Because this is silencing a warning for a nonexistent line, we
# only support the very specific NOLINT(build/header_guard) syntax,
# and not the general NOLINT or NOLINT(*) syntax.
- for i in lines:
+ raw_lines = clean_lines.lines_without_raw_strings
+ for i in raw_lines:
if Search(r'//\s*NOLINT\(build/header_guard\)', i):
return
cppvar = GetHeaderGuardCPPVariable(filename)
- ifndef = None
+ ifndef = ''
ifndef_linenum = 0
- define = None
- endif = None
+ define = ''
+ endif = ''
endif_linenum = 0
- for linenum, line in enumerate(lines):
+ for linenum, line in enumerate(raw_lines):
linesplit = line.split()
if len(linesplit) >= 2:
# find the first occurrence of #ifndef and #define, save arg
@@ -1708,18 +1719,12 @@ def CheckForHeaderGuard(filename, lines, error):
endif = line
endif_linenum = linenum
- if not ifndef:
+ if not ifndef or not define or ifndef != define:
error(filename, 0, 'build/header_guard', 5,
'No #ifndef header guard found, suggested CPP variable is: %s' %
cppvar)
return
- if not define:
- error(filename, 0, 'build/header_guard', 5,
- 'No #define header guard found, suggested CPP variable is: %s' %
- cppvar)
- return
-
# The guard should be PATH_FILE_H_, but we also allow PATH_FILE_H__
# for backward compatibility.
if ifndef != cppvar:
@@ -1727,26 +1732,69 @@ def CheckForHeaderGuard(filename, lines, error):
if ifndef != cppvar + '_':
error_level = 5
- ParseNolintSuppressions(filename, lines[ifndef_linenum], ifndef_linenum,
+ ParseNolintSuppressions(filename, raw_lines[ifndef_linenum], ifndef_linenum,
error)
error(filename, ifndef_linenum, 'build/header_guard', error_level,
'#ifndef header guard has wrong style, please use: %s' % cppvar)
- if define != ifndef:
- error(filename, 0, 'build/header_guard', 5,
- '#ifndef and #define don\'t match, suggested CPP variable is: %s' %
- cppvar)
+ # Check for "//" comments on endif line.
+ ParseNolintSuppressions(filename, raw_lines[endif_linenum], endif_linenum,
+ error)
+ match = Match(r'#endif\s*//\s*' + cppvar + r'(_)?\b', endif)
+ if match:
+ if match.group(1) == '_':
+ # Issue low severity warning for deprecated double trailing underscore
+ error(filename, endif_linenum, 'build/header_guard', 0,
+ '#endif line should be "#endif // %s"' % cppvar)
return
- if endif != ('#endif // %s' % cppvar):
- error_level = 0
- if endif != ('#endif // %s' % (cppvar + '_')):
- error_level = 5
+ # Didn't find the corresponding "//" comment. If this file does not
+ # contain any "//" comments at all, it could be that the compiler
+ # only wants "/**/" comments, look for those instead.
+ no_single_line_comments = True
+ for i in xrange(1, len(raw_lines) - 1):
+ line = raw_lines[i]
+ if Match(r'^(?:(?:\'(?:\.|[^\'])*\')|(?:"(?:\.|[^"])*")|[^\'"])*//', line):
+ no_single_line_comments = False
+ break
+
+ if no_single_line_comments:
+ match = Match(r'#endif\s*/\*\s*' + cppvar + r'(_)?\s*\*/', endif)
+ if match:
+ if match.group(1) == '_':
+ # Low severity warning for double trailing underscore
+ error(filename, endif_linenum, 'build/header_guard', 0,
+ '#endif line should be "#endif /* %s */"' % cppvar)
+ return
+
+ # Didn't find anything
+ error(filename, endif_linenum, 'build/header_guard', 5,
+ '#endif line should be "#endif // %s"' % cppvar)
- ParseNolintSuppressions(filename, lines[endif_linenum], endif_linenum,
- error)
- error(filename, endif_linenum, 'build/header_guard', error_level,
- '#endif line should be "#endif // %s"' % cppvar)
+
+def CheckHeaderFileIncluded(filename, include_state, error):
+ """Logs an error if a .cc file does not include its header."""
+
+ # Do not check test files
+ if filename.endswith('_test.cc') or filename.endswith('_unittest.cc'):
+ return
+
+ fileinfo = FileInfo(filename)
+ headerfile = filename[0:len(filename) - 2] + 'h'
+ if not os.path.exists(headerfile):
+ return
+ headername = FileInfo(headerfile).RepositoryName()
+ first_include = 0
+ for section_list in include_state.include_list:
+ for f in section_list:
+ if headername in f[0] or f[0] in headername:
+ return
+ if not first_include:
+ first_include = f[1]
+
+ error(filename, first_include, 'build/include', 5,
+ '%s should include its header file %s' % (fileinfo.RepositoryName(),
+ headername))
def CheckForBadCharacters(filename, lines, error):
@@ -2042,6 +2090,23 @@ class _ClassInfo(_BlockInfo):
self.is_derived = True
def CheckEnd(self, filename, clean_lines, linenum, error):
+ # If there is a DISALLOW macro, it should appear near the end of
+ # the class.
+ seen_last_thing_in_class = False
+ for i in xrange(linenum - 1, self.starting_linenum, -1):
+ match = Search(
+ r'\b(DISALLOW_COPY_AND_ASSIGN|DISALLOW_IMPLICIT_CONSTRUCTORS)\(' +
+ self.name + r'\)',
+ clean_lines.elided[i])
+ if match:
+ if seen_last_thing_in_class:
+ error(filename, i, 'readability/constructors', 3,
+ match.group(1) + ' should be the last thing in the class')
+ break
+
+ if not Match(r'^\s*$', clean_lines.elided[i]):
+ seen_last_thing_in_class = True
+
# Check that closing brace is aligned with beginning of the class.
# Only do this if the closing brace is indented by only whitespaces.
# This means we will not check single-line class definitions.
@@ -2722,7 +2787,8 @@ def CheckSpacingForFunctionCall(filename, clean_lines, linenum, error):
'Extra space after (')
if (Search(r'\w\s+\(', fncall) and
not Search(r'#\s*define|typedef|using\s+\w+\s*=', fncall) and
- not Search(r'\w\s+\((\w+::)*\*\w+\)\(', fncall)):
+ not Search(r'\w\s+\((\w+::)*\*\w+\)\(', fncall) and
+ not Search(r'\bcase\s+\(', fncall)):
# TODO(unknown): Space after an operator function seem to be a common
# error, silence those for now by restricting them to highest verbosity.
if Search(r'\boperator_*\b', line):
@@ -2892,11 +2958,14 @@ def CheckComment(line, filename, linenum, next_line_start, error):
'TODO(my_username) should be followed by a space')
# If the comment contains an alphanumeric character, there
- # should be a space somewhere between it and the //.
- if Match(r'//[^ ]*\w', comment):
+ # should be a space somewhere between it and the // unless
+ # it's a /// or //! Doxygen comment.
+ if (Match(r'//[^ ]*\w', comment) and
+ not Match(r'(///|//\!)(\s+|$)', comment)):
error(filename, linenum, 'whitespace/comments', 4,
'Should have a space between // and comment')
+
def CheckAccess(filename, clean_lines, linenum, nesting_state, error):
"""Checks for improper use of DISALLOW* macros.
@@ -3083,7 +3152,12 @@ def CheckOperatorSpacing(filename, clean_lines, linenum, error):
# Otherwise not. Note we only check for non-spaces on *both* sides;
# sometimes people put non-spaces on one side when aligning ='s among
# many lines (not that this is behavior that I approve of...)
- if Search(r'[\w.]=[\w.]', line) and not Search(r'\b(if|while) ', line):
+ if ((Search(r'[\w.]=', line) or
+ Search(r'=[\w.]', line))
+ and not Search(r'\b(if|while|for) ', line)
+ # Operators taken from [lex.operators] in C++11 standard.
+ and not Search(r'(>=|<=|==|!=|&=|\^=|\|=|\+=|\*=|\/=|\%=)', line)
+ and not Search(r'operator=', line)):
error(filename, linenum, 'whitespace/operators', 4,
'Missing spaces around =')
@@ -3135,9 +3209,8 @@ def CheckOperatorSpacing(filename, clean_lines, linenum, error):
#
# We also allow operators following an opening parenthesis, since
# those tend to be macros that deal with operators.
- match = Search(r'(operator|\S)(?:L|UL|ULL|l|ul|ull)?<<([^\s,=])', line)
- if (match and match.group(1) != '(' and
- not (match.group(1).isdigit() and match.group(2).isdigit()) and
+ match = Search(r'(operator|[^\s(<])(?:L|UL|ULL|l|ul|ull)?<<([^\s,=<])', line)
+ if (match and not (match.group(1).isdigit() and match.group(2).isdigit()) and
not (match.group(1) == 'operator' and match.group(2) == ';')):
error(filename, linenum, 'whitespace/operators', 3,
'Missing spaces around <<')
@@ -3255,7 +3328,7 @@ def CheckBracesSpacing(filename, clean_lines, linenum, error):
# an initializer list, for instance), you should have spaces before your
# braces. And since you should never have braces at the beginning of a line,
# this is an easy test.
- match = Match(r'^(.*[^ ({]){', line)
+ match = Match(r'^(.*[^ ({>]){', line)
if match:
# Try a bit harder to check for brace initialization. This
# happens in one of the following forms:
@@ -3355,13 +3428,14 @@ def IsTemplateParameterList(clean_lines, linenum, column):
return False
-def IsRValueType(clean_lines, nesting_state, linenum, column):
+def IsRValueType(typenames, clean_lines, nesting_state, linenum, column):
"""Check if the token ending on (linenum, column) is a type.
Assumes that text to the right of the column is "&&" or a function
name.
Args:
+ typenames: set of type names from template-argument-list.
clean_lines: A CleansedLines instance containing the file.
nesting_state: A NestingState instance which maintains information about
the current stack of nested blocks being parsed.
@@ -3385,7 +3459,7 @@ def IsRValueType(clean_lines, nesting_state, linenum, column):
if Match(r'&&\s*(?:[>,]|\.\.\.)', suffix):
return True
- # Check for simple type and end of templates:
+ # Check for known types and end of templates:
# int&& variable
# vector<int>&& variable
#
@@ -3393,9 +3467,10 @@ def IsRValueType(clean_lines, nesting_state, linenum, column):
# recognize pointer and reference types:
# int* Function()
# int& Function()
- if match.group(2) in ['char', 'char16_t', 'char32_t', 'wchar_t', 'bool',
- 'short', 'int', 'long', 'signed', 'unsigned',
- 'float', 'double', 'void', 'auto', '>', '*', '&']:
+ if (match.group(2) in typenames or
+ match.group(2) in ['char', 'char16_t', 'char32_t', 'wchar_t', 'bool',
+ 'short', 'int', 'long', 'signed', 'unsigned',
+ 'float', 'double', 'void', 'auto', '>', '*', '&']):
return True
# If we see a close parenthesis, look for decltype on the other side.
@@ -3528,7 +3603,7 @@ def IsRValueType(clean_lines, nesting_state, linenum, column):
# Something else. Check that tokens to the left look like
# return_type function_name
- match_func = Match(r'^(.*)\s+\w(?:\w|::)*(?:<[^<>]*>)?\s*$',
+ match_func = Match(r'^(.*\S.*)\s+\w(?:\w|::)*(?:<[^<>]*>)?\s*$',
match_symbol.group(1))
if match_func:
# Check for constructors, which don't have return types.
@@ -3538,7 +3613,7 @@ def IsRValueType(clean_lines, nesting_state, linenum, column):
if (implicit_constructor and
implicit_constructor.group(1) == implicit_constructor.group(2)):
return True
- return IsRValueType(clean_lines, nesting_state, linenum,
+ return IsRValueType(typenames, clean_lines, nesting_state, linenum,
len(match_func.group(1)))
# Nothing before the function name. If this is inside a block scope,
@@ -3576,12 +3651,13 @@ def IsDeletedOrDefault(clean_lines, linenum):
return Match(r'\s*=\s*(?:delete|default)\b', close_line[close_paren:])
-def IsRValueAllowed(clean_lines, linenum):
+def IsRValueAllowed(clean_lines, linenum, typenames):
"""Check if RValue reference is allowed on a particular line.
Args:
clean_lines: A CleansedLines instance containing the file.
linenum: The number of the line to check.
+ typenames: set of type names from template-argument-list.
Returns:
True if line is within the region where RValue references are allowed.
"""
@@ -3602,7 +3678,7 @@ def IsRValueAllowed(clean_lines, linenum):
return IsDeletedOrDefault(clean_lines, linenum)
# Allow constructors
- match = Match(r'\s*([\w<>]+)\s*::\s*([\w<>]+)\s*\(', line)
+ match = Match(r'\s*(?:[\w<>]+::)*([\w<>]+)\s*::\s*([\w<>]+)\s*\(', line)
if match and match.group(1) == match.group(2):
return IsDeletedOrDefault(clean_lines, linenum)
if Search(r'\b(?:explicit|inline)\s+[\w<>]+\s*\(', line):
@@ -3615,7 +3691,86 @@ def IsRValueAllowed(clean_lines, linenum):
if Match(r'^\s*$', previous_line) or Search(r'[{}:;]\s*$', previous_line):
return IsDeletedOrDefault(clean_lines, linenum)
- return False
+ # Reject types not mentioned in template-argument-list
+ while line:
+ match = Match(r'^.*?(\w+)\s*&&(.*)$', line)
+ if not match:
+ break
+ if match.group(1) not in typenames:
+ return False
+ line = match.group(2)
+
+ # All RValue types that were in template-argument-list should have
+ # been removed by now. Those were allowed, assuming that they will
+ # be forwarded.
+ #
+ # If there are no remaining RValue types left (i.e. types that were
+ # not found in template-argument-list), flag those as not allowed.
+ return line.find('&&') < 0
+
+
+def GetTemplateArgs(clean_lines, linenum):
+ """Find list of template arguments associated with this function declaration.
+
+ Args:
+ clean_lines: A CleansedLines instance containing the file.
+ linenum: Line number containing the start of the function declaration,
+ usually one line after the end of the template-argument-list.
+ Returns:
+ Set of type names, or empty set if this does not appear to have
+ any template parameters.
+ """
+ # Find start of function
+ func_line = linenum
+ while func_line > 0:
+ line = clean_lines.elided[func_line]
+ if Match(r'^\s*$', line):
+ return set()
+ if line.find('(') >= 0:
+ break
+ func_line -= 1
+ if func_line == 0:
+ return set()
+
+ # Collapse template-argument-list into a single string
+ argument_list = ''
+ match = Match(r'^(\s*template\s*)<', clean_lines.elided[func_line])
+ if match:
+ # template-argument-list on the same line as function name
+ start_col = len(match.group(1))
+ _, end_line, end_col = CloseExpression(clean_lines, func_line, start_col)
+ if end_col > -1 and end_line == func_line:
+ start_col += 1 # Skip the opening bracket
+ argument_list = clean_lines.elided[func_line][start_col:end_col]
+
+ elif func_line > 1:
+ # template-argument-list one line before function name
+ match = Match(r'^(.*)>\s*$', clean_lines.elided[func_line - 1])
+ if match:
+ end_col = len(match.group(1))
+ _, start_line, start_col = ReverseCloseExpression(
+ clean_lines, func_line - 1, end_col)
+ if start_col > -1:
+ start_col += 1 # Skip the opening bracket
+ while start_line < func_line - 1:
+ argument_list += clean_lines.elided[start_line][start_col:]
+ start_col = 0
+ start_line += 1
+ argument_list += clean_lines.elided[func_line - 1][start_col:end_col]
+
+ if not argument_list:
+ return set()
+
+ # Extract type names
+ typenames = set()
+ while True:
+ match = Match(r'^[,\s]*(?:typename|class)(?:\.\.\.)?\s+(\w+)(.*)$',
+ argument_list)
+ if not match:
+ break
+ typenames.add(match.group(1))
+ argument_list = match.group(2)
+ return typenames
def CheckRValueReference(filename, clean_lines, linenum, nesting_state, error):
@@ -3643,9 +3798,10 @@ def CheckRValueReference(filename, clean_lines, linenum, nesting_state, error):
# Either poorly formed && or an rvalue reference, check the context
# to get a more accurate error message. Mostly we want to determine
# if what's to the left of "&&" is a type or not.
+ typenames = GetTemplateArgs(clean_lines, linenum)
and_pos = len(match.group(1))
- if IsRValueType(clean_lines, nesting_state, linenum, and_pos):
- if not IsRValueAllowed(clean_lines, linenum):
+ if IsRValueType(typenames, clean_lines, nesting_state, linenum, and_pos):
+ if not IsRValueAllowed(clean_lines, linenum, typenames):
error(filename, linenum, 'build/c++11', 3,
'RValue references are an unapproved C++ feature.')
else:
@@ -3926,8 +4082,10 @@ def CheckTrailingSemicolon(filename, clean_lines, linenum, error):
# semicolons, while the downside for getting the blacklist wrong
# would result in compile errors.
#
- # In addition to macros, we also don't want to warn on compound
- # literals and lambdas.
+ # In addition to macros, we also don't want to warn on
+ # - Compound literals
+ # - Lambdas
+ # - alignas specifier with anonymous structs:
closing_brace_pos = match.group(1).rfind(')')
opening_parenthesis = ReverseCloseExpression(
clean_lines, linenum, closing_brace_pos)
@@ -3941,6 +4099,7 @@ def CheckTrailingSemicolon(filename, clean_lines, linenum, error):
'EXCLUSIVE_LOCKS_REQUIRED', 'SHARED_LOCKS_REQUIRED',
'LOCKS_EXCLUDED', 'INTERFACE_DEF')) or
(func and not Search(r'\boperator\s*\[\s*\]', func.group(1))) or
+ Search(r'\b(?:struct|union)\s+alignas\s*$', line_prefix) or
Search(r'\s+=\s*$', line_prefix)):
match = None
if (match and
@@ -4484,6 +4643,10 @@ def CheckIncludeLine(filename, clean_lines, linenum, include_state, error):
error(filename, linenum, 'build/include', 4,
'"%s" already included at %s:%s' %
(include, filename, duplicate_line))
+ elif (include.endswith('.cc') and
+ os.path.dirname(fileinfo.RepositoryName()) != os.path.dirname(include)):
+ error(filename, linenum, 'build/include', 4,
+ 'Do not include .cc files from other packages')
elif not _THIRD_PARTY_HEADERS_PATTERN.match(include):
include_state.include_list[-1].append((include, linenum))
@@ -4511,20 +4674,6 @@ def CheckIncludeLine(filename, clean_lines, linenum, include_state, error):
'Include "%s" not in alphabetical order' % include)
include_state.SetLastHeader(canonical_include)
- # Look for any of the stream classes that are part of standard C++.
- match = _RE_PATTERN_INCLUDE.match(line)
- if match:
- include = match.group(2)
- if Match(r'(f|ind|io|i|o|parse|pf|stdio|str|)?stream$', include):
- # Many unit tests use cout, so we exempt them.
- if not _IsTestFilename(filename):
- # Suggest a different header for ostream
- if include == 'ostream':
- error(filename, linenum, 'readability/streams', 3,
- 'For logging, include "base/logging.h" instead of <ostream>.')
- else:
- error(filename, linenum, 'readability/streams', 3,
- 'Streams are highly discouraged.')
def _GetTextInside(text, start_pattern):
@@ -4755,25 +4904,6 @@ def CheckLanguage(filename, clean_lines, linenum, file_extension,
'Do not use variable-length arrays. Use an appropriately named '
"('k' followed by CamelCase) compile-time constant for the size.")
- # If DISALLOW_COPY_AND_ASSIGN DISALLOW_IMPLICIT_CONSTRUCTORS is present,
- # then it should be the last thing in the class declaration.
- match = Match(
- (r'\s*'
- r'(DISALLOW_(COPY_AND_ASSIGN|IMPLICIT_CONSTRUCTORS))'
- r'\(.*\);$'),
- line)
- if match and linenum + 1 < clean_lines.NumLines():
- next_line = clean_lines.elided[linenum + 1]
- # We allow some, but not all, declarations of variables to be present
- # in the statement that defines the class. The [\w\*,\s]* fragment of
- # the regular expression below allows users to declare instances of
- # the class or pointers to instances, but not less common types such
- # as function pointers or arrays. It's a tradeoff between allowing
- # reasonable code and avoiding trying to parse more C++ using regexps.
- if not Search(r'^\s*}[\w\*,\s]*;', next_line):
- error(filename, linenum, 'readability/constructors', 3,
- match.group(1) + ' should be the last thing in the class')
-
# Check for use of unnamed namespaces in header files. Registration
# macros are typically OK, so we allow use of "namespace {" on lines
# that end with backslashes.
@@ -4889,6 +5019,22 @@ def IsDerivedFunction(clean_lines, linenum):
return False
+def IsOutOfLineMethodDefinition(clean_lines, linenum):
+ """Check if current line contains an out-of-line method definition.
+
+ Args:
+ clean_lines: A CleansedLines instance containing the file.
+ linenum: The number of the line to check.
+ Returns:
+ True if current line contains an out-of-line method definition.
+ """
+ # Scan back a few lines for start of current function
+ for i in xrange(linenum, max(-1, linenum - 10), -1):
+ if Match(r'^([^()]*\w+)\(', clean_lines.elided[i]):
+ return Match(r'^[^()]*\w+::\w+\(', clean_lines.elided[i]) is not None
+ return False
+
+
def IsInitializerList(clean_lines, linenum):
"""Check if current line is inside constructor initializer list.
@@ -4957,6 +5103,11 @@ def CheckForNonConstReference(filename, clean_lines, linenum,
if IsDerivedFunction(clean_lines, linenum):
return
+ # Don't warn on out-of-line method definitions, as we would warn on the
+ # in-line declaration, if it isn't marked with 'override'.
+ if IsOutOfLineMethodDefinition(clean_lines, linenum):
+ return
+
# Long type names may be broken across multiple lines, usually in one
# of these forms:
# LongType
@@ -5152,9 +5303,9 @@ def CheckCasts(filename, clean_lines, linenum, error):
# This is not a cast:
# reference_type&(int* function_param);
match = Search(
- r'(?:[^\w]&\(([^)]+)\)[\w(])|'
+ r'(?:[^\w]&\(([^)*][^)]*)\)[\w(])|'
r'(?:[^\w]&(static|dynamic|down|reinterpret)_cast\b)', line)
- if match and match.group(1) != '*':
+ if match:
# Try a better error message when the & is bound to something
# dereferenced by the casted pointer, as opposed to the casted
# pointer itself.
@@ -5235,6 +5386,7 @@ def CheckCStyleCast(filename, clean_lines, linenum, cast_type, pattern, error):
# ExceptionMember(int) throw (...);
# ExceptionMember(int) throw (...) {
# PureVirtual(int) = 0;
+ # [](int) -> bool {
#
# These are functions of some sort, where the compiler would be fine
# if they had named parameters, but people often omit those
@@ -5246,7 +5398,7 @@ def CheckCStyleCast(filename, clean_lines, linenum, cast_type, pattern, error):
# <TemplateArgument(int)>;
# <(FunctionPointerTemplateArgument)(int)>;
remainder = line[match.end(0):]
- if Match(r'^\s*(?:;|const\b|throw\b|final\b|override\b|[=>{),])',
+ if Match(r'^\s*(?:;|const\b|throw\b|final\b|override\b|[=>{),]|->)',
remainder):
# Looks like an unnamed parameter.
@@ -5335,6 +5487,7 @@ _HEADERS_CONTAINING_TEMPLATES = (
('<set>', ('set', 'multiset',)),
('<stack>', ('stack',)),
('<string>', ('char_traits', 'basic_string',)),
+ ('<tuple>', ('tuple',)),
('<utility>', ('pair',)),
('<vector>', ('vector',)),
@@ -5602,9 +5755,21 @@ def CheckRedundantVirtual(filename, clean_lines, linenum, error):
"""
# Look for "virtual" on current line.
line = clean_lines.elided[linenum]
- virtual = Match(r'^(.*\bvirtual\b)', line)
+ virtual = Match(r'^(.*)(\bvirtual\b)(.*)$', line)
if not virtual: return
+ # Ignore "virtual" keywords that are near access-specifiers. These
+ # are only used in class base-specifier and do not apply to member
+ # functions.
+ if (Search(r'\b(public|protected|private)\s+$', virtual.group(1)) or
+ Match(r'^\s+(public|protected|private)\b', virtual.group(3))):
+ return
+
+ # Ignore the "virtual" keyword from virtual base classes. Usually
+ # there is a column on the same line in these cases (virtual base
+ # classes are rare in google3 because multiple inheritance is rare).
+ if Match(r'^.*[^:]:[^:].*$', line): return
+
# Look for the next opening parenthesis. This is the start of the
# parameter list (possibly on the next line shortly after virtual).
# TODO(unknown): doesn't work if there are virtual functions with
@@ -5612,7 +5777,7 @@ def CheckRedundantVirtual(filename, clean_lines, linenum, error):
# that this is rare.
end_col = -1
end_line = -1
- start_col = len(virtual.group(1))
+ start_col = len(virtual.group(2))
for start_line in xrange(linenum, min(linenum + 3, clean_lines.NumLines())):
line = clean_lines.elided[start_line][start_col:]
parameter_list = Match(r'^([^(]*)\(', line)
@@ -5652,9 +5817,21 @@ def CheckRedundantOverrideOrFinal(filename, clean_lines, linenum, error):
linenum: The number of the line to check.
error: The function to call with any errors found.
"""
- # Check that at most one of "override" or "final" is present, not both
+ # Look for closing parenthesis nearby. We need one to confirm where
+ # the declarator ends and where the virt-specifier starts to avoid
+ # false positives.
line = clean_lines.elided[linenum]
- if Search(r'\boverride\b', line) and Search(r'\bfinal\b', line):
+ declarator_end = line.rfind(')')
+ if declarator_end >= 0:
+ fragment = line[declarator_end:]
+ else:
+ if linenum > 1 and clean_lines.elided[linenum - 1].rfind(')') >= 0:
+ fragment = line
+ else:
+ return
+
+ # Check that at most one of "override" or "final" is present, not both
+ if Search(r'\boverride\b', fragment) and Search(r'\bfinal\b', fragment):
error(filename, linenum, 'readability/inheritance', 4,
('"override" is redundant since function is '
'already declared as "final"'))
@@ -5809,9 +5986,6 @@ def FlagCxx11Features(filename, clean_lines, linenum, error):
# type_traits
'alignment_of',
'aligned_union',
-
- # utility
- 'forward',
):
if Search(r'\bstd::%s\b' % top_name, line):
error(filename, linenum, 'build/c++11', 5,
@@ -5846,11 +6020,12 @@ def ProcessFileData(filename, file_extension, lines, error,
CheckForCopyright(filename, lines, error)
- if file_extension == 'h':
- CheckForHeaderGuard(filename, lines, error)
-
RemoveMultiLineComments(filename, lines, error)
clean_lines = CleansedLines(lines)
+
+ if file_extension == 'h':
+ CheckForHeaderGuard(filename, clean_lines, error)
+
for line in xrange(clean_lines.NumLines()):
ProcessLine(filename, file_extension, clean_lines, line,
include_state, function_state, nesting_state, error,
@@ -5859,6 +6034,10 @@ def ProcessFileData(filename, file_extension, lines, error,
nesting_state.CheckCompletedBlocks(filename, error)
CheckForIncludeWhatYouUse(filename, clean_lines, include_state, error)
+
+ # Check that the .cc file has included its header if it exists.
+ if file_extension == 'cc':
+ CheckHeaderFileIncluded(filename, include_state, error)
# We check here rather than inside ProcessLine so that we see raw
# lines rather than "cleaned" lines.
@@ -6136,8 +6315,9 @@ def main():
for filename in filenames:
ProcessFile(filename, _cpplint_state.verbose_level)
_cpplint_state.PrintErrorCounts()
- print("erreur=", _cpplint_state.error_count)
- sys.exit(_cpplint_state.error_count)
+ # VR fix - otherwise all cpplint are errors from script launch
+ # sys.exit(_cpplint_state.error_count > 0)
+ sys.exit(0)
if __name__ == '__main__':
diff --git a/scripts/cpplint_to_cppcheckxml.py b/scripts/cpplint_to_cppcheckxml.py
new file mode 100755
index 00000000..7a3813c7
--- /dev/null
+++ b/scripts/cpplint_to_cppcheckxml.py
@@ -0,0 +1,66 @@
+#!/usr/bin/env python
+
+# Convert output from Google's cpplint.py to the cppcheck XML format for
+# consumption by the Jenkins cppcheck plugin.
+
+# Reads from stdin and writes to stderr (to mimic cppcheck)
+
+
+import sys
+import re
+import cgi
+
+def cpplint_score_to_cppcheck_severity(score):
+ # I'm making this up
+ if score == 1:
+ return 'style'
+ elif score == 2:
+ return 'style'
+ elif score == 3:
+ return 'warning'
+ elif score == 4:
+ return 'warning'
+ elif score == 5:
+ return 'error'
+
+
+def parse():
+ # TODO: do this properly, using the xml module.
+ # Write header
+ sys.stderr.write('''<?xml version="1.0" encoding="UTF-8"?>\n''')
+ # VR : sys.stderr.write('''<results>\n''')
+ # Add from VR + [
+ sys.stderr.write('''<results version="2">\n''')
+ sys.stderr.write(''' <cppcheck version="1.63"/>\n''')
+ sys.stderr.write(''' <errors>\n''')
+ # -]
+
+ # Do line-by-line conversion
+ r = re.compile('([^:]*):([0-9]*): ([^\[]*)\[([^\]]*)\] \[([0-9]*)\].*')
+
+ for l in sys.stdin.readlines():
+ m = r.match(l.strip())
+ if not m:
+ continue
+ g = m.groups()
+ if len(g) != 5:
+ continue
+ fname, lineno, msg, label, score = g
+ severity = cpplint_score_to_cppcheck_severity(int(score))
+ # VR : sys.stderr.write('''<error file="%s" line="%s" id="%s" severity="%s" msg="%s"/>\n'''%(fname, lineno, label, severity, msg))
+ # Add from VR + [
+ sys.stderr.write(''' <error id="%s" severity="%s" msg="%s">\n'''%(label, severity, cgi.escape(msg,quote=True)))
+ sys.stderr.write(''' <location file="%s" line="%s"/>\n'''%(fname, lineno))
+ sys.stderr.write(''' </error>\n''')
+ # -]
+
+ # Write footer
+ # Add from VR + [
+ sys.stderr.write(''' </errors>\n''')
+ # -]
+ sys.stderr.write('''</results>\n''')
+
+
+if __name__ == '__main__':
+ parse()
+
diff --git a/scripts/generate_version.sh b/scripts/generate_version.sh
index 1a8ce4ab..4d28cf53 100755
--- a/scripts/generate_version.sh
+++ b/scripts/generate_version.sh
@@ -62,6 +62,10 @@ do
then
# SPECIFIC FOR CMAKE MODULES
cp -R $ROOT_DIR/src/$package $VERSION_DIR
+ elif [ "$package" == "GudhUI" ]
+ then
+ # SPECIFIC FOR GUDHI USER INTERFACE
+ cp -R $ROOT_DIR/src/$package $VERSION_DIR
else
# PACKAGE COPY
if [ -d "$ROOT_DIR/src/$package$PACKAGE_INC_DIR" ]
diff --git a/src/Bottleneck/include/gudhi/Persistence_diagrams_graph.h b/src/Bottleneck/include/gudhi/Persistence_diagrams_graph.h
index 7e278209..73ad940b 100644
--- a/src/Bottleneck/include/gudhi/Persistence_diagrams_graph.h
+++ b/src/Bottleneck/include/gudhi/Persistence_diagrams_graph.h
@@ -34,7 +34,7 @@ namespace Gudhi {
namespace bottleneck {
// Diagram_point is the type of the persistence diagram's points
-typedef typename std::pair<double, double> Diagram_point;
+typedef std::pair<double, double> Diagram_point;
// Return the used index for encoding none of the points
int null_point_index();
@@ -81,7 +81,7 @@ Persistence_diagrams_graph::Persistence_diagrams_graph(Persistence_diagram1& dia
swap(u, v);
}
-Persistence_diagrams_graph::Persistence_diagrams_graph::Persistence_diagrams_graph()
+Persistence_diagrams_graph::Persistence_diagrams_graph()
: u(), v() { }
inline bool Persistence_diagrams_graph::on_the_u_diagonal(int u_point_index) const {
@@ -108,7 +108,7 @@ inline double Persistence_diagrams_graph::distance(int u_point_index, int v_poin
return 0;
Diagram_point p_u = get_u_point(u_point_index);
Diagram_point p_v = get_v_point(v_point_index);
- return std::max(std::fabs(p_u.first - p_v.first), std::fabs(p_u.second - p_v.second));
+ return (std::max)(std::fabs(p_u.first - p_v.first), std::fabs(p_u.second - p_v.second));
}
inline int Persistence_diagrams_graph::size() const {
diff --git a/src/Bottleneck/test/CMakeLists.txt b/src/Bottleneck/test/CMakeLists.txt
index 7044372e..3dfd80cd 100644
--- a/src/Bottleneck/test/CMakeLists.txt
+++ b/src/Bottleneck/test/CMakeLists.txt
@@ -1,21 +1,25 @@
cmake_minimum_required(VERSION 2.6)
-project(GUDHIBottleneckUnitTest)
+project(GUDHIBottleneckUT)
-if(NOT MSVC)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage")
- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} --coverage")
- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} --coverage")
+if (GCOVR_PATH)
+ # for gcovr to make coverage reports - Corbera Jenkins plugin
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
+ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage")
+ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fprofile-arcs -ftest-coverage")
+endif()
+if (GPROF_PATH)
+ # for gprof to make coverage reports - Jenkins
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg")
+ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg")
+ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -pg")
endif()
-add_executable ( BottleneckUnitTest bottleneck_unit_test.cpp )
-target_link_libraries(BottleneckUnitTest ${Boost_SYSTEM_LIBRARY} ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
+add_executable ( BottleneckUT bottleneck_unit_test.cpp )
+target_link_libraries(BottleneckUT ${Boost_SYSTEM_LIBRARY} ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
# Unitary tests
-add_test(BottleneckUnitTest ${CMAKE_CURRENT_BINARY_DIR}/BottleneckUnitTest)
-
-if (LCOV_PATH)
- # Lcov code coverage of unitary test
- add_test(src/Bottleneck/lcov/coverage.log ${CMAKE_SOURCE_DIR}/scripts/check_code_coverage.sh ${CMAKE_SOURCE_DIR}/src/Bottleneck)
-endif()
+add_test(NAME BottleneckUT
+ COMMAND ${CMAKE_CURRENT_BINARY_DIR}/BottleneckUT
+ # XML format for Jenkins xUnit plugin
+ --log_format=XML --log_sink=${CMAKE_SOURCE_DIR}/BottleneckUT.xml --log_level=test_suite --report_level=no)
-cpplint_add_tests("${CMAKE_SOURCE_DIR}/src/Bottleneck/include/gudhi")
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index e2271efd..7b30f77a 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -10,25 +10,32 @@ if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release")
endif()
if(MSVC)
- SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4267 /wd4668 /wd4311 /wd4800 /wd4820 /wd4503 /wd4244 /wd4345 /wd4996 /wd4396 /wd4018")
+ SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4267 /wd4668 /wd4311 /wd4800 /wd4820 /wd4503 /wd4244 /wd4345 /wd4996 /wd4396 /wd4018")
else()
- list(APPEND CMAKE_CXX_FLAGS "-std=c++11")
-endif()
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+endif()
-# BOOST ISSUE result_of vs C++11
-add_definitions(-DBOOST_RESULT_OF_USE_DECLTYPE)
+set(Boost_USE_STATIC_LIBS ON)
+set(Boost_USE_MULTITHREADED ON)
+set(Boost_USE_STATIC_RUNTIME OFF)
-find_package(Boost)
+find_package(Boost)
find_package(GMP)
if(GMP_FOUND)
- find_package(GMPXX)
+ find_package(GMPXX)
endif()
+
find_package(CGAL)
if(NOT Boost_FOUND)
message(FATAL_ERROR "NOTICE: This demo requires Boost and will not be compiled.")
else()
- INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
+ # BOOST ISSUE result_of vs C++11
+ add_definitions(-DBOOST_RESULT_OF_USE_DECLTYPE)
+ # BOOST ISSUE with Libraries name resolution under Windows
+ add_definitions(-DBOOST_ALL_NO_LIB)
+
+ INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
include_directories(include/)
@@ -41,4 +48,10 @@ else()
add_subdirectory(example/Alpha_complex)
add_subdirectory(example/Bottleneck)
+ # GudhUI
+ add_subdirectory(GudhUI)
+
+ # data points generator
+ add_subdirectory(data/points/generator)
+
endif()
diff --git a/src/Contraction/example/Garland_heckbert.cpp b/src/Contraction/example/Garland_heckbert.cpp
index 5b178ff9..a41f65aa 100644
--- a/src/Contraction/example/Garland_heckbert.cpp
+++ b/src/Contraction/example/Garland_heckbert.cpp
@@ -7,7 +7,7 @@
*
* Author(s): David Salinas
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Méditerranée (France)
+ * Copyright (C) 2014 INRIA Sophia Antipolis-M�diterran�e (France)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -42,72 +42,70 @@ using namespace Gudhi;
using namespace skbl;
using namespace contraction;
-
-struct Geometry_trait{
- typedef Point_d Point;
+struct Geometry_trait {
+ typedef Point_d Point;
};
/**
* The vertex stored in the complex contains a quadric.
*/
struct Garland_heckbert_traits : public Skeleton_blocker_simple_geometric_traits<Geometry_trait> {
+ public:
-public:
- struct Garland_heckbert_vertex : public Simple_geometric_vertex{
- Error_quadric<Geometry_trait::Point> quadric;
- };
- typedef Garland_heckbert_vertex Graph_vertex;
+ struct Garland_heckbert_vertex : public Simple_geometric_vertex {
+ Error_quadric<Geometry_trait::Point> quadric;
+ };
+ typedef Garland_heckbert_vertex Graph_vertex;
};
typedef Skeleton_blocker_geometric_complex< Garland_heckbert_traits > Complex;
typedef Edge_profile<Complex> EdgeProfile;
typedef Skeleton_blocker_contractor<Complex> Complex_contractor;
-
/**
* How the new vertex is placed after an edge collapse : here it is placed at
* the point minimizing the cost of the quadric.
*/
-class GH_placement : public Gudhi::contraction::Placement_policy<EdgeProfile>{
- Complex& complex_;
-public:
- typedef typename Gudhi::contraction::Placement_policy<EdgeProfile>::Placement_type Placement_type;
-
- GH_placement(Complex& complex):complex_(complex){}
-
- Placement_type operator()(const EdgeProfile& profile) const override{
- auto sum_quad(profile.v0().quadric);
- sum_quad += profile.v1().quadric;
-
- boost::optional<Point> min_quadric_pt(sum_quad.min_cost());
- if (min_quadric_pt)
- return Placement_type(*min_quadric_pt);
- else
- return profile.p0();
- }
+class GH_placement : public Gudhi::contraction::Placement_policy<EdgeProfile> {
+ Complex& complex_;
+ public:
+ typedef Gudhi::contraction::Placement_policy<EdgeProfile>::Placement_type Placement_type;
+
+ GH_placement(Complex& complex) : complex_(complex) { }
+
+ Placement_type operator()(const EdgeProfile& profile) const override {
+ auto sum_quad(profile.v0().quadric);
+ sum_quad += profile.v1().quadric;
+
+ boost::optional<Point> min_quadric_pt(sum_quad.min_cost());
+ if (min_quadric_pt)
+ return Placement_type(*min_quadric_pt);
+ else
+ return profile.p0();
+ }
};
/**
* How much cost an edge collapse : here the costs is given by a quadric
* which expresses a squared distances with triangles planes.
*/
-class GH_cost : public Gudhi::contraction::Cost_policy<EdgeProfile>{
- Complex& complex_;
-public:
-
- typedef typename Gudhi::contraction::Cost_policy<EdgeProfile>::Cost_type Cost_type;
-
- GH_cost(Complex& complex):complex_(complex){}
-
- Cost_type operator()( EdgeProfile const& profile, boost::optional<Point> const& new_point ) const override {
- Cost_type res;
- if (new_point){
- auto sum_quad(profile.v0().quadric);
- sum_quad += profile.v1().quadric;
- res = sum_quad.cost(*new_point);
- }
- return res;
- }
+class GH_cost : public Gudhi::contraction::Cost_policy<EdgeProfile> {
+ Complex& complex_;
+ public:
+
+ typedef Gudhi::contraction::Cost_policy<EdgeProfile>::Cost_type Cost_type;
+
+ GH_cost(Complex& complex) : complex_(complex) { }
+
+ Cost_type operator()(EdgeProfile const& profile, boost::optional<Point> const& new_point) const override {
+ Cost_type res;
+ if (new_point) {
+ auto sum_quad(profile.v0().quadric);
+ sum_quad += profile.v1().quadric;
+ res = sum_quad.cost(*new_point);
+ }
+ return res;
+ }
};
/**
@@ -115,79 +113,80 @@ public:
* Here we initializes the quadrics of every vertex at the on_started call back
* and we update them when contracting an edge (the quadric become the sum of both quadrics).
*/
-class GH_visitor: public Gudhi::contraction::Contraction_visitor<EdgeProfile> {
- Complex& complex_;
-public:
- GH_visitor(Complex& complex):complex_(complex){}
-
- //Compute quadrics for every vertex v
- //The quadric of v consists in the sum of quadric
- //of every triangles passing through v weighted by its area
- void on_started(Complex & complex) override{
- for(auto v : complex.vertex_range()){
- auto & quadric_v(complex[v].quadric);
- for(auto t : complex.triangle_range(v)){
- auto t_it = t.begin();
- const auto& p0(complex.point(*t_it++));
- const auto& p1(complex.point(*t_it++));
- const auto& p2(complex.point(*t_it++));
- quadric_v+=Error_quadric<Point>(p0,p1,p2);
- }
- }
- }
-
- /**
- * @brief Called when an edge is about to be contracted and replaced by a vertex whose position is *placement.
- */
- void on_contracting(EdgeProfile const &profile, boost::optional< Point > placement)
- override{
- profile.v0().quadric += profile.v1().quadric;
- }
+class GH_visitor : public Gudhi::contraction::Contraction_visitor<EdgeProfile> {
+ Complex& complex_;
+ public:
+
+ GH_visitor(Complex& complex) : complex_(complex) { }
+
+ //Compute quadrics for every vertex v
+ //The quadric of v consists in the sum of quadric
+ //of every triangles passing through v weighted by its area
+
+ void on_started(Complex & complex) override {
+ for (auto v : complex.vertex_range()) {
+ auto & quadric_v(complex[v].quadric);
+ for (auto t : complex.triangle_range(v)) {
+ auto t_it = t.begin();
+ const auto& p0(complex.point(*t_it++));
+ const auto& p1(complex.point(*t_it++));
+ const auto& p2(complex.point(*t_it++));
+ quadric_v += Error_quadric<Point>(p0, p1, p2);
+ }
+ }
+ }
+
+ /**
+ * @brief Called when an edge is about to be contracted and replaced by a vertex whose position is *placement.
+ */
+ void on_contracting(EdgeProfile const &profile, boost::optional< Point > placement)
+ override {
+ profile.v0().quadric += profile.v1().quadric;
+ }
};
+int main(int argc, char *argv[]) {
+ if (argc != 4) {
+ std::cerr << "Usage " << argv[0] << " input.off output.off N to load the file input.off, contract N edges and save the result to output.off.\n";
+ return EXIT_FAILURE;
+ }
-int main(int argc, char *argv[]){
- if (argc!=4){
- std::cerr << "Usage "<<argv[0]<<" input.off output.off N to load the file input.off, contract N edges and save the result to output.off.\n";
- return EXIT_FAILURE;
- }
-
- Complex complex;
+ Complex complex;
- // load the points
- Skeleton_blocker_off_reader<Complex> off_reader(argv[1],complex);
- if(!off_reader.is_valid()){
- std::cerr << "Unable to read file:"<<argv[1]<<std::endl;
- return EXIT_FAILURE;
- }
+ // load the points
+ Skeleton_blocker_off_reader<Complex> off_reader(argv[1], complex);
+ if (!off_reader.is_valid()) {
+ std::cerr << "Unable to read file:" << argv[1] << std::endl;
+ return EXIT_FAILURE;
+ }
- std::cout << "Load complex with "<<complex.num_vertices()<<" vertices"<<std::endl;
+ std::cout << "Load complex with " << complex.num_vertices() << " vertices" << std::endl;
- int num_contractions = atoi(argv[3]);
+ int num_contractions = atoi(argv[3]);
- boost::timer::auto_cpu_timer t;
+ boost::timer::auto_cpu_timer t;
- // constructs the contractor object with Garland Heckbert policies.
- Complex_contractor contractor(complex,
- new GH_cost(complex),
- new GH_placement(complex),
- contraction::make_link_valid_contraction<EdgeProfile>(),
- new GH_visitor(complex)
- );
+ // constructs the contractor object with Garland Heckbert policies.
+ Complex_contractor contractor(complex,
+ new GH_cost(complex),
+ new GH_placement(complex),
+ contraction::make_link_valid_contraction<EdgeProfile>(),
+ new GH_visitor(complex)
+ );
- std::cout<<"Contract "<<num_contractions<<" edges"<<std::endl;
- contractor.contract_edges(num_contractions);
+ std::cout << "Contract " << num_contractions << " edges" << std::endl;
+ contractor.contract_edges(num_contractions);
- std::cout << "Final complex has "<<
- complex.num_vertices()<<" vertices, "<<
- complex.num_edges()<<" edges and" <<
- complex.num_triangles()<<" triangles."<<std::endl;
+ std::cout << "Final complex has " <<
+ complex.num_vertices() << " vertices, " <<
+ complex.num_edges() << " edges and" <<
+ complex.num_triangles() << " triangles." << std::endl;
- //write simplified complex
- Skeleton_blocker_off_writer<Complex> off_writer(argv[2],complex);
+ //write simplified complex
+ Skeleton_blocker_off_writer<Complex> off_writer(argv[2], complex);
- return EXIT_SUCCESS;
+ return EXIT_SUCCESS;
}
diff --git a/src/Contraction/example/Garland_heckbert/Error_quadric.h b/src/Contraction/example/Garland_heckbert/Error_quadric.h
index 725a3a56..725a3a56 100755..100644
--- a/src/Contraction/example/Garland_heckbert/Error_quadric.h
+++ b/src/Contraction/example/Garland_heckbert/Error_quadric.h
diff --git a/src/GudhUI/CMakeLists.txt b/src/GudhUI/CMakeLists.txt
index b62be8ff..ddbae969 100644
--- a/src/GudhUI/CMakeLists.txt
+++ b/src/GudhUI/CMakeLists.txt
@@ -1,82 +1,69 @@
cmake_minimum_required(VERSION 2.8)
project(GudhUI)
-#Specify Gudhi's path here
-#for instance
-#set(Gudhi_Path "C:/Users/dsalinas/Documents/Recherche/Code/c++/Gudhi_library_1.1.0/include")
-set(Gudhi_Path "/home/dsalinas/Documents/CodeSVN/gudhi/src/include")
-if(MSVC)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4267 /wd4668 /wd4311 /wd4800 /wd4820 /wd4503 /wd4244 /wd4345 /wd4996 /wd4396 /wd4018 -frounding-math")
-else()
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -pedantic -frounding-math")
-endif()
-
-set(EXECUTABLE_OUTPUT_PATH bin/${CMAKE_BUILD_TYPE})
-
-find_package(Boost REQUIRED COMPONENTS)
find_package(CGAL COMPONENTS Qt4)
find_package(Qt4)
find_package(QGLViewer)
find_package(OpenGL)
+message("CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}")
+message("CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG}")
+message("CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE}")
if ( CGAL_FOUND AND QT4_FOUND AND OPENGL_FOUND AND QGLVIEWER_FOUND )
- set( QT_USE_QTXML TRUE )
- set( QT_USE_QTMAIN TRUE )
- set( QT_USE_QTSCRIPT TRUE )
- set( QT_USE_QTOPENGL TRUE )
- SET(Boost_USE_STATIC_LIBS ON)
- SET(Boost_USE_MULTITHREAD OFF)
-
- INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
- LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
-
- include(${QT_USE_FILE})
- include(${CGAL_USE_FILE})
-
- include_directories (${QGLVIEWER_INCLUDE_DIR})
- include_directories(.)
- include_directories(${Gudhi_Path})
+ set( QT_USE_QTXML TRUE )
+ set( QT_USE_QTMAIN TRUE )
+ set( QT_USE_QTSCRIPT TRUE )
+ set( QT_USE_QTOPENGL TRUE )
+ SET(Boost_USE_STATIC_LIBS ON)
+ SET(Boost_USE_MULTITHREAD OFF)
+ INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
+ LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
+
+ include(${QT_USE_FILE})
+ include(${CGAL_USE_FILE})
+ include_directories (${QGLVIEWER_INCLUDE_DIR})
+ include_directories(.)
- # qt : ui file, created wih Qt Designer ###############
- set(CMAKE_CURRENT_BINARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/gui")
- qt4_wrap_ui( uis
- gui/main_window.ui
- gui/MenuEdgeContraction.ui
- gui/KNearestNeighborsMenu.ui
- gui/UniformNeighborsMenu.ui
- gui/PersistenceMenu.ui
- )
+ # qt : ui file, created wih Qt Designer ###############
+ set(CMAKE_CURRENT_BINARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/gui")
+ qt4_wrap_ui( uis
+ gui/main_window.ui
+ gui/MenuEdgeContraction.ui
+ gui/KNearestNeighborsMenu.ui
+ gui/UniformNeighborsMenu.ui
+ gui/PersistenceMenu.ui
+ )
- set(CMAKE_CURRENT_BINARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/gui")
- qt4_automoc(
- gui/MainWindow.cpp
- gui/Menu_k_nearest_neighbors.cpp
- gui/Menu_uniform_neighbors.cpp
- gui/Menu_edge_contraction.cpp
- gui/Menu_persistence.cpp
- )
+ set(CMAKE_CURRENT_BINARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/gui")
+ qt4_automoc(
+ gui/MainWindow.cpp
+ gui/Menu_k_nearest_neighbors.cpp
+ gui/Menu_uniform_neighbors.cpp
+ gui/Menu_edge_contraction.cpp
+ gui/Menu_persistence.cpp
+ )
- set(CMAKE_CURRENT_BINARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/view")
- qt4_automoc(view/Viewer_instructor.cpp
- view/Viewer.cpp
- )
- #####################################################################
+ set(CMAKE_CURRENT_BINARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/view")
+ qt4_automoc(view/Viewer_instructor.cpp
+ view/Viewer.cpp
+ )
+ #####################################################################
- add_executable ( GudhUI
- gui/gudhui.cpp
- gui/MainWindow.cpp
- gui/Menu_k_nearest_neighbors.cpp
- gui/Menu_uniform_neighbors.cpp
- gui/Menu_edge_contraction.cpp
- gui/Menu_persistence.cpp
- view/Viewer_instructor.cpp
- view/Viewer.cpp
- ${uis}
- )
+ add_executable ( GudhUI
+ gui/gudhui.cpp
+ gui/MainWindow.cpp
+ gui/Menu_k_nearest_neighbors.cpp
+ gui/Menu_uniform_neighbors.cpp
+ gui/Menu_edge_contraction.cpp
+ gui/Menu_persistence.cpp
+ view/Viewer_instructor.cpp
+ view/Viewer.cpp
+ ${uis}
+ )
- target_link_libraries( GudhUI ${QT_LIBRARIES} ${QGLVIEWER_LIBRARIES} )
- target_link_libraries( GudhUI ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY} )
+ target_link_libraries( GudhUI ${QT_LIBRARIES} ${QGLVIEWER_LIBRARIES} )
+ target_link_libraries( GudhUI ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY} )
else()
message(STATUS "NOTICE: This demo requires CGAL, the QGLViewer, OpenGL and Qt4, and will not be compiled.")
diff --git a/src/GudhUI/model/Model.h b/src/GudhUI/model/Model.h
index 6ac971d0..87545989 100644
--- a/src/GudhUI/model/Model.h
+++ b/src/GudhUI/model/Model.h
@@ -72,8 +72,6 @@ class Model{
public:
Complex complex_;
typedef Complex::Vertex_handle Vertex_handle;
- typedef Complex::CVI CVI;
-
Model():complex_(){
}
@@ -317,7 +315,7 @@ private:
void run_chomp(){
save_complex_in_file_for_chomp();
std::cout << "Call CHOMP library\n";
- system("../src/utils/homsimpl chomp.sim");
+ system("utils/homsimpl chomp.sim");
}
void save_complex_in_file_for_chomp(){
diff --git a/src/GudhUI/view/Viewer.h b/src/GudhUI/view/Viewer.h
index 5639aa56..5639aa56 100755..100644
--- a/src/GudhUI/view/Viewer.h
+++ b/src/GudhUI/view/Viewer.h
diff --git a/src/GudhUI/view/Viewer_instructor.h b/src/GudhUI/view/Viewer_instructor.h
index 9a2a236b..9a2a236b 100755..100644
--- a/src/GudhUI/view/Viewer_instructor.h
+++ b/src/GudhUI/view/Viewer_instructor.h
diff --git a/src/Persistent_cohomology/example/CMakeLists.txt b/src/Persistent_cohomology/example/CMakeLists.txt
index 3697a419..9487cce6 100644
--- a/src/Persistent_cohomology/example/CMakeLists.txt
+++ b/src/Persistent_cohomology/example/CMakeLists.txt
@@ -9,7 +9,6 @@ if (NOT MSVC)
add_executable(rips_persistence rips_persistence.cpp)
target_link_libraries(rips_persistence ${Boost_SYSTEM_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY})
- add_test(rips_persistence_2 ${CMAKE_CURRENT_BINARY_DIR}/rips_persistence ${CMAKE_SOURCE_DIR}/data/points/Kl.txt -r 0.25 -d 3 -p 2 -m 100)
add_test(rips_persistence_3 ${CMAKE_CURRENT_BINARY_DIR}/rips_persistence ${CMAKE_SOURCE_DIR}/data/points/Kl.txt -r 0.25 -d 3 -p 3 -m 100)
add_executable(persistence_from_file persistence_from_file.cpp)
@@ -23,14 +22,14 @@ if (NOT MSVC)
add_executable(rips_multifield_persistence rips_multifield_persistence.cpp )
target_link_libraries(rips_multifield_persistence ${Boost_SYSTEM_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY} ${GMPXX_LIBRARIES} ${GMP_LIBRARIES})
- add_test(rips_multifield_persistence_2_3 ${CMAKE_CURRENT_BINARY_DIR}/rips_multifield_persistence ${CMAKE_SOURCE_DIR}/data/points/Kl.txt -r 0.25 -d 3 -p 2 -q 3 -m 100)
add_test(rips_multifield_persistence_2_71 ${CMAKE_CURRENT_BINARY_DIR}/rips_multifield_persistence ${CMAKE_SOURCE_DIR}/data/points/Kl.txt -r 0.25 -d 3 -p 2 -q 71 -m 100)
add_executable ( performance_rips_persistence performance_rips_persistence.cpp )
target_link_libraries(performance_rips_persistence ${Boost_SYSTEM_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY} ${GMPXX_LIBRARIES} ${GMP_LIBRARIES})
if(CGAL_FOUND)
- add_definitions(-DDEBUG_TRACES)
+ # uncomment to display debug traces
+ # add_definitions(-DDEBUG_TRACES)
add_executable(alpha_shapes_persistence alpha_shapes_persistence.cpp)
target_link_libraries(alpha_shapes_persistence ${Boost_SYSTEM_LIBRARY} ${GMPXX_LIBRARIES} ${GMP_LIBRARIES} ${CGAL_LIBRARY})
add_test(alpha_shapes_persistence_2_0_5 ${CMAKE_CURRENT_BINARY_DIR}/alpha_shapes_persistence ${CMAKE_SOURCE_DIR}/data/points/bunny_5000 2 0.5)
diff --git a/src/Persistent_cohomology/example/rips_multifield_persistence.cpp b/src/Persistent_cohomology/example/rips_multifield_persistence.cpp
index 2505897e..297a8f98 100644
--- a/src/Persistent_cohomology/example/rips_multifield_persistence.cpp
+++ b/src/Persistent_cohomology/example/rips_multifield_persistence.cpp
@@ -70,8 +70,6 @@ int main (int argc, char * argv[])
st.insert_graph(prox_graph); // insert the proximity graph in the simplex tree
st.expansion( dim_max ); // expand the graph until dimension dim_max
- std::cout << "st=" << st << std::endl;
-
// Sort the simplices in the order of the filtration
st.initialize_filtration();
diff --git a/src/Persistent_cohomology/include/gudhi/Persistent_cohomology.h b/src/Persistent_cohomology/include/gudhi/Persistent_cohomology.h
index c42e4be4..b0d68f09 100644
--- a/src/Persistent_cohomology/include/gudhi/Persistent_cohomology.h
+++ b/src/Persistent_cohomology/include/gudhi/Persistent_cohomology.h
@@ -238,8 +238,8 @@ class Persistent_cohomology {
transverse_idx_(), // key -> row
persistent_pairs_(),
interval_length_policy(&cpx, 0),
- column_pool_(new boost::object_pool<Column>()), // memory pools for the CAM
- cell_pool_(new boost::object_pool<Cell>()) {
+ column_pool_(), // memory pools for the CAM
+ cell_pool_() {
Simplex_key idx_fil = 0;
for (auto & sh : cpx_->filtration_simplex_range()) {
cpx_->assign_key(sh, idx_fil);
@@ -273,9 +273,6 @@ class Persistent_cohomology {
transverse_ref.second.row_->clear();
delete transverse_ref.second.row_;
}
-// Clear the memory pools
- delete column_pool_;
- delete cell_pool_;
}
private:
@@ -528,8 +525,8 @@ class Persistent_cohomology {
Arith_element charac) {
Simplex_key key = cpx_->key(sigma);
// Create a column containing only one cell,
- Column * new_col = column_pool_->construct(Column(key));
- Cell * new_cell = cell_pool_->construct(Cell(key, x, new_col));
+ Column * new_col = column_pool_.construct(Column(key));
+ Cell * new_cell = cell_pool_.construct(Cell(key, x, new_col));
new_col->col_.push_back(*new_cell);
// and insert it in the matrix, in constant time thanks to the hint cam_.end().
// Indeed *new_col has the biggest lexicographic value because key is the
@@ -585,7 +582,7 @@ class Persistent_cohomology {
if (curr_col->col_.empty()) { // If the column is null
ds_repr_[curr_col->class_key_] = NULL;
- column_pool_->free(curr_col); // delete curr_col;
+ column_pool_.destroy(curr_col); // delete curr_col;
} else {
// Find whether the column obtained is already in the CAM
result_insert_cam = cam_.insert(*curr_col);
@@ -602,7 +599,7 @@ class Persistent_cohomology {
Simplex_key key_tmp = dsets_.find_set(curr_col->class_key_);
ds_repr_[key_tmp] = &(*(result_insert_cam.first));
result_insert_cam.first->class_key_ = key_tmp;
- column_pool_->free(curr_col); // delete curr_col;
+ column_pool_.destroy(curr_col); // delete curr_col;
}
}
} else {
@@ -634,7 +631,7 @@ class Persistent_cohomology {
++target_it;
} else {
if (target_it->key_ > other_it->first) {
- Cell * cell_tmp = cell_pool_->construct(Cell(other_it->first // key
+ Cell * cell_tmp = cell_pool_.construct(Cell(other_it->first // key
, coeff_field_.additive_identity(), &target));
cell_tmp->coefficient_ = coeff_field_.plus_times_equal(cell_tmp->coefficient_, other_it->second, w);
@@ -652,8 +649,7 @@ class Persistent_cohomology {
Cell * tmp_cell_ptr = &(*tmp_it);
target.col_.erase(tmp_it); // removed from column
- coeff_field_.clear_coefficient(tmp_cell_ptr->coefficient_);
- cell_pool_->free(tmp_cell_ptr); // delete from memory
+ cell_pool_.destroy(tmp_cell_ptr); // delete from memory
} else {
++target_it;
++other_it;
@@ -662,7 +658,7 @@ class Persistent_cohomology {
}
}
while (other_it != other.end()) {
- Cell * cell_tmp = cell_pool_->construct(Cell(other_it->first, coeff_field_.additive_identity(), &target));
+ Cell * cell_tmp = cell_pool_.construct(Cell(other_it->first, coeff_field_.additive_identity(), &target));
cell_tmp->coefficient_ = coeff_field_.plus_times_equal(cell_tmp->coefficient_, other_it->second, w);
target.col_.insert(target.col_.end(), *cell_tmp);
@@ -767,8 +763,8 @@ class Persistent_cohomology {
std::list<Persistent_interval> persistent_pairs_;
length_interval interval_length_policy;
- boost::object_pool<Column> * column_pool_;
- boost::object_pool<Cell> * cell_pool_;
+ boost::object_pool<Column> column_pool_;
+ boost::object_pool<Cell> cell_pool_;
};
/** @} */ // end defgroup persistent_cohomology
diff --git a/src/Persistent_cohomology/include/gudhi/Persistent_cohomology/Field_Zp.h b/src/Persistent_cohomology/include/gudhi/Persistent_cohomology/Field_Zp.h
index 5d0c9f9f..2349cdac 100644
--- a/src/Persistent_cohomology/include/gudhi/Persistent_cohomology/Field_Zp.h
+++ b/src/Persistent_cohomology/include/gudhi/Persistent_cohomology/Field_Zp.h
@@ -76,9 +76,6 @@ class Field_Zp {
return plus_times_equal(0, y, (Element)w);
}
- void clear_coefficient(Element x) {
- }
-
Element plus_equal(const Element& x, const Element& y) {
return plus_times_equal(x, y, (Element)1);
}
diff --git a/src/Persistent_cohomology/include/gudhi/Persistent_cohomology/Multi_field.h b/src/Persistent_cohomology/include/gudhi/Persistent_cohomology/Multi_field.h
index b43bb16e..c6fd5282 100644
--- a/src/Persistent_cohomology/include/gudhi/Persistent_cohomology/Multi_field.h
+++ b/src/Persistent_cohomology/include/gudhi/Persistent_cohomology/Multi_field.h
@@ -77,6 +77,7 @@ class Multi_field {
mpz_nextprime(tmp_prime, tmp_prime);
curr_prime = mpz_get_ui(tmp_prime);
}
+ mpz_clear(tmp_prime);
// set m to primorial(bound_prime)
prod_characteristics_ = 1;
for (auto p : primes_) {
@@ -102,10 +103,6 @@ class Multi_field {
}
}
- void clear_coefficient(Element & x) {
- mpz_clear(x.get_mpz_t());
- }
-
/** \brief Returns the additive idendity \f$0_{\Bbbk}\f$ of the field.*/
const Element& additive_identity() const {
return add_id_all;
diff --git a/src/Persistent_cohomology/test/CMakeLists.txt b/src/Persistent_cohomology/test/CMakeLists.txt
index 9dc19251..ed63a6ac 100644
--- a/src/Persistent_cohomology/test/CMakeLists.txt
+++ b/src/Persistent_cohomology/test/CMakeLists.txt
@@ -1,29 +1,39 @@
cmake_minimum_required(VERSION 2.6)
-project(GUDHITestSimplexTree)
+project(GUDHIPersistentCohomologyUT)
-if(NOT MSVC)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage")
- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} --coverage")
- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} --coverage")
+if (GCOVR_PATH)
+ # for gcovr to make coverage reports - Corbera Jenkins plugin
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
+ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage")
+ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fprofile-arcs -ftest-coverage")
+endif()
+if (GPROF_PATH)
+ # for gprof to make coverage reports - Jenkins
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg")
+ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg")
+ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -pg")
endif()
-add_executable ( persistent_cohomology_unit_test persistent_cohomology_unit_test.cpp )
-target_link_libraries(persistent_cohomology_unit_test ${Boost_SYSTEM_LIBRARY} ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
+add_executable ( PersistentCohomologyUT persistent_cohomology_unit_test.cpp )
+target_link_libraries(PersistentCohomologyUT ${Boost_SYSTEM_LIBRARY} ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
# Unitary tests
-add_test(persistent_cohomology_unit_test ${CMAKE_CURRENT_BINARY_DIR}/persistent_cohomology_unit_test ${CMAKE_SOURCE_DIR}/src/Persistent_cohomology/test/simplex_tree_file_for_unit_test.txt)
+add_test(NAME PersistentCohomologyUT
+ COMMAND ${CMAKE_CURRENT_BINARY_DIR}/PersistentCohomologyUT
+ ${CMAKE_SOURCE_DIR}/src/Persistent_cohomology/test/simplex_tree_file_for_unit_test.txt
+ # XML format for Jenkins xUnit plugin
+ --log_format=XML --log_sink=${CMAKE_SOURCE_DIR}/PersistentCohomologyUT.xml --log_level=test_suite --report_level=no)
if(GMPXX_FOUND AND GMP_FOUND)
- add_executable ( persistent_cohomology_unit_test_multi_field persistent_cohomology_unit_test_multi_field.cpp )
- target_link_libraries(persistent_cohomology_unit_test_multi_field ${Boost_SYSTEM_LIBRARY} ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY} ${GMPXX_LIBRARIES} ${GMP_LIBRARIES})
+ add_executable ( PersistentCohomologyMultiFieldUT persistent_cohomology_unit_test_multi_field.cpp )
+ target_link_libraries(PersistentCohomologyMultiFieldUT ${Boost_SYSTEM_LIBRARY} ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY} ${GMPXX_LIBRARIES} ${GMP_LIBRARIES})
- # Unitary tests
- add_test(persistent_cohomology_unit_test_multi_field ${CMAKE_CURRENT_BINARY_DIR}/persistent_cohomology_unit_test_multi_field ${CMAKE_SOURCE_DIR}/src/Persistent_cohomology/test/simplex_tree_file_for_multi_field_unit_test.txt)
-endif()
+ # Unitary tests
+ add_test(NAME PersistentCohomologyMultiFieldUT
+ COMMAND ${CMAKE_CURRENT_BINARY_DIR}/PersistentCohomologyMultiFieldUT
+ ${CMAKE_SOURCE_DIR}/src/Persistent_cohomology/test/simplex_tree_file_for_multi_field_unit_test.txt
+ # XML format for Jenkins xUnit plugin
+ --log_format=XML --log_sink=${CMAKE_SOURCE_DIR}/PersistentCohomologyMultiFieldUT.xml --log_level=test_suite --report_level=no)
-if (LCOV_PATH)
- # Lcov code coverage of unitary test
- add_test(src/Persistent_cohomology/lcov/coverage.log ${CMAKE_SOURCE_DIR}/scripts/check_code_coverage.sh ${CMAKE_SOURCE_DIR}/src/Persistent_cohomology)
endif()
-cpplint_add_tests("${CMAKE_SOURCE_DIR}/src/Persistent_cohomology/include/gudhi")
diff --git a/src/Persistent_cohomology/test/README b/src/Persistent_cohomology/test/README
index ddceac63..6c64b5fe 100644
--- a/src/Persistent_cohomology/test/README
+++ b/src/Persistent_cohomology/test/README
@@ -1,7 +1,9 @@
To compile:
***********
+cd /path-to-gudhi/
cmake .
+cd /path-to-test/
make
To launch with details:
@@ -9,13 +11,13 @@ To launch with details:
SINGLE FIELD
------------
-./persistent_cohomology_unit_test simplex_tree_file_for_unit_test.txt --report_level=detailed --log_level=all
+./PersistentCohomologyUT simplex_tree_file_for_unit_test.txt --report_level=detailed --log_level=all
==> echo $? returns 0 in case of success (non-zero otherwise)
MULTI FIELD
-----------
-./persistent_cohomology_unit_test_multi_field simplex_tree_file_for_multi_field_unit_test.txt --report_level=detailed --log_level=all
+./PersistentCohomologyMultiFieldUT simplex_tree_file_for_multi_field_unit_test.txt --report_level=detailed --log_level=all
==> echo $? returns 0 in case of success (non-zero otherwise)
diff --git a/src/Persistent_cohomology/test/persistent_cohomology_unit_test.cpp b/src/Persistent_cohomology/test/persistent_cohomology_unit_test.cpp
index 1e7a74a7..55bc7066 100644
--- a/src/Persistent_cohomology/test/persistent_cohomology_unit_test.cpp
+++ b/src/Persistent_cohomology/test/persistent_cohomology_unit_test.cpp
@@ -1,4 +1,4 @@
-#define BOOST_TEST_MODULE const_string test
+#define BOOST_TEST_MODULE persistent_cohomology test
#include <boost/test/included/unit_test.hpp>
#include <boost/system/error_code.hpp>
#include <boost/chrono/thread_clock.hpp>
@@ -22,8 +22,7 @@ using namespace boost::unit_test;
typedef Simplex_tree<> typeST;
std::string test_rips_persistence(int coefficient, int min_persistence) {
- // Check file name is given as parameter from CMakeLists.txt
- BOOST_CHECK(framework::master_test_suite().argc >= 2);
+ // file name is given as parameter from CMakeLists.txt
const std::string inputFile(framework::master_test_suite().argv[1]);
std::ifstream simplex_tree_stream;
diff --git a/src/Persistent_cohomology/test/persistent_cohomology_unit_test_multi_field.cpp b/src/Persistent_cohomology/test/persistent_cohomology_unit_test_multi_field.cpp
index e88add3a..18a4725e 100644
--- a/src/Persistent_cohomology/test/persistent_cohomology_unit_test_multi_field.cpp
+++ b/src/Persistent_cohomology/test/persistent_cohomology_unit_test_multi_field.cpp
@@ -1,4 +1,4 @@
-#define BOOST_TEST_MODULE const_string test
+#define BOOST_TEST_MODULE persistent_cohomology_multi_field test
#include <boost/test/included/unit_test.hpp>
#include <boost/system/error_code.hpp>
#include <boost/chrono/thread_clock.hpp>
@@ -23,8 +23,7 @@ using namespace boost::unit_test;
typedef Simplex_tree<> typeST;
std::string test_rips_persistence(int min_coefficient, int max_coefficient, int min_persistence) {
- // Check file name is given as parameter from CMakeLists.txt
- BOOST_CHECK(framework::master_test_suite().argc >= 2);
+ // file name is given as parameter from CMakeLists.txt
const std::string inputFile(framework::master_test_suite().argv[1]);
std::ifstream simplex_tree_stream;
@@ -38,9 +37,9 @@ std::string test_rips_persistence(int min_coefficient, int max_coefficient, int
<< " - filtration= " << st.filtration() << std::endl;
// Check
- BOOST_CHECK(st.num_simplices() == 6142604);
+ BOOST_CHECK(st.num_simplices() == 58);
BOOST_CHECK(st.dimension() == 3);
- BOOST_CHECK(st.filtration() == 0.249999);
+ BOOST_CHECK(st.filtration() == 0.4);
// Sort the simplices in the order of the filtration
st.initialize_filtration();
@@ -48,9 +47,9 @@ std::string test_rips_persistence(int min_coefficient, int max_coefficient, int
// Compute the persistence diagram of the complex
Persistent_cohomology<Simplex_tree<>, Multi_field> pcoh(st);
- pcoh.init_coefficients(min_coefficient, max_coefficient); // initializes the coefficient field for homology
+ pcoh.init_coefficients(min_coefficient, max_coefficient); // initializes the coefficient field for homology
// Check infinite rips
- pcoh.compute_persistent_cohomology(min_persistence); // Minimal lifetime of homology feature to be recorded.
+ pcoh.compute_persistent_cohomology(min_persistence); // Minimal lifetime of homology feature to be recorded.
std::ostringstream ossRips;
pcoh.output_diagram(ossRips);
@@ -60,68 +59,54 @@ std::string test_rips_persistence(int min_coefficient, int max_coefficient, int
}
void test_rips_persistence_in_dimension(int min_dimension, int max_dimension) {
- std::string value0(" 0 0 inf");
- std::string value1(" 1 0.0702103 inf");
- std::string value2("2 1 0.0702103 inf");
- std::string value3("2 2 0.159992 inf");
+ // there are 2 discontinued ensembles
+ std::string value0(" 0 0.25 inf");
+ std::string value1(" 1 0.4 inf");
+ // And a big hole - cut in 2 pieces after 0.3
+ std::string value2(" 0 0.2 0.3");
+
+ // For dim <= 1 =>
+ std::string value3(" 1 0.25 inf");
+ std::string value4(" 2 0.25 inf");
+ std::string value5(" 1 0.3 inf");
+ std::string value6(" 2 0.3 inf");
+ std::string value7(" 2 0.4 inf");
std::cout << "********************************************************************" << std::endl;
std::cout << "TEST OF RIPS_PERSISTENT_COHOMOLOGY_MULTI_FIELD MIN_DIM=" << min_dimension << " MAX_DIM=" << max_dimension << " MIN_PERS=0" << std::endl;
- std::string str_rips_persistence = test_rips_persistence(min_dimension, max_dimension, 1);
-
- BOOST_CHECK(str_rips_persistence.find(value0) != std::string::npos); // Check found
- BOOST_CHECK(str_rips_persistence.find(value1) != std::string::npos); // Check found
- BOOST_CHECK(str_rips_persistence.find(value2) != std::string::npos); // Check found
- BOOST_CHECK(str_rips_persistence.find(value3) != std::string::npos); // Check found
- std::cout << "str_rips_persistence=" << str_rips_persistence << std::endl;
-
- std::cout << "********************************************************************" << std::endl;
- std::cout << "TEST OF RIPS_PERSISTENT_COHOMOLOGY_MULTI_FIELD DIM=" << min_dimension << " MAX_DIM=" << max_dimension << " MIN_PERS=2" << std::endl;
-
- str_rips_persistence = test_rips_persistence(min_dimension, max_dimension, 2);
-
- BOOST_CHECK(str_rips_persistence.find(value0) != std::string::npos); // Check found
- BOOST_CHECK(str_rips_persistence.find(value1) != std::string::npos); // Check found
- BOOST_CHECK(str_rips_persistence.find(value2) != std::string::npos); // Check found
- BOOST_CHECK(str_rips_persistence.find(value3) != std::string::npos); // Check found
+ std::string str_rips_persistence = test_rips_persistence(min_dimension, max_dimension, static_cast<Filtration_value> (0.0));
std::cout << "str_rips_persistence=" << str_rips_persistence << std::endl;
- std::cout << "********************************************************************" << std::endl;
- std::cout << "TEST OF RIPS_PERSISTENT_COHOMOLOGY_MULTI_FIELD DIM=" << min_dimension << " MAX_DIM=" << max_dimension << " MIN_PERS=3" << std::endl;
-
- str_rips_persistence = test_rips_persistence(min_dimension, max_dimension, 3);
-
BOOST_CHECK(str_rips_persistence.find(value0) != std::string::npos); // Check found
BOOST_CHECK(str_rips_persistence.find(value1) != std::string::npos); // Check found
BOOST_CHECK(str_rips_persistence.find(value2) != std::string::npos); // Check found
- BOOST_CHECK(str_rips_persistence.find(value3) != std::string::npos); // Check found
- std::cout << "str_rips_persistence=" << str_rips_persistence << std::endl;
- std::cout << "********************************************************************" << std::endl;
- std::cout << "TEST OF RIPS_PERSISTENT_COHOMOLOGY_MULTI_FIELD DIM=" << min_dimension << " MAX_DIM=" << max_dimension << " MIN_PERS=Inf" << std::endl;
+ if ((min_dimension < 2) && (max_dimension < 2)) {
+ BOOST_CHECK(str_rips_persistence.find(value3) != std::string::npos); // Check found
+ BOOST_CHECK(str_rips_persistence.find(value4) != std::string::npos); // Check found
+ BOOST_CHECK(str_rips_persistence.find(value5) != std::string::npos); // Check found
+ BOOST_CHECK(str_rips_persistence.find(value6) != std::string::npos); // Check found
+ BOOST_CHECK(str_rips_persistence.find(value7) != std::string::npos); // Check found
+ } else {
+ BOOST_CHECK(str_rips_persistence.find(value3) == std::string::npos); // Check not found
+ BOOST_CHECK(str_rips_persistence.find(value4) == std::string::npos); // Check not found
+ BOOST_CHECK(str_rips_persistence.find(value5) == std::string::npos); // Check not found
+ BOOST_CHECK(str_rips_persistence.find(value6) == std::string::npos); // Check not found
+ BOOST_CHECK(str_rips_persistence.find(value7) == std::string::npos); // Check not found
+ }
- str_rips_persistence = test_rips_persistence(min_dimension, max_dimension, std::numeric_limits<int>::max());
-
- BOOST_CHECK(str_rips_persistence.find(value0) != std::string::npos); // Check found
- BOOST_CHECK(str_rips_persistence.find(value1) != std::string::npos); // Check found
- BOOST_CHECK(str_rips_persistence.find(value2) != std::string::npos); // Check found
- BOOST_CHECK(str_rips_persistence.find(value3) != std::string::npos); // Check found
- std::cout << "str_rips_persistence=" << str_rips_persistence << std::endl;
}
-BOOST_AUTO_TEST_CASE( rips_persistent_cohomology_multi_field_dim_1_2 )
-{
- test_rips_persistence_in_dimension(1, 2);
+BOOST_AUTO_TEST_CASE(rips_persistent_cohomology_multi_field_dim_1_2) {
+ test_rips_persistence_in_dimension(0, 1);
}
-BOOST_AUTO_TEST_CASE( rips_persistent_cohomology_multi_field_dim_2_3 )
-{
- test_rips_persistence_in_dimension(2, 3);
+BOOST_AUTO_TEST_CASE(rips_persistent_cohomology_multi_field_dim_2_3) {
+ test_rips_persistence_in_dimension(1, 3);
}
-BOOST_AUTO_TEST_CASE( rips_persistent_cohomology_multi_field_dim_1_5 )
-{
+BOOST_AUTO_TEST_CASE(rips_persistent_cohomology_multi_field_dim_1_5) {
test_rips_persistence_in_dimension(1, 5);
}
diff --git a/src/Persistent_cohomology/test/simplex_tree_file_for_multi_field_unit_test.txt b/src/Persistent_cohomology/test/simplex_tree_file_for_multi_field_unit_test.txt
new file mode 100644
index 00000000..ed2c0c3d
--- /dev/null
+++ b/src/Persistent_cohomology/test/simplex_tree_file_for_multi_field_unit_test.txt
@@ -0,0 +1,58 @@
+0 0 0.2
+0 3 0.2
+1 3 0 0.2
+0 6 0.2
+0 11 0.2
+1 11 6 0.2
+0 13 0.25
+0 14 0.25
+1 14 13 0.25
+0 15 0.25
+1 15 13 0.25
+1 15 14 0.25
+2 15 14 13 0.25
+0 1 0.3
+1 1 0 0.3
+0 2 0.3
+1 2 0 0.3
+1 2 1 0.3
+2 2 1 0 0.3
+0 4 0.3
+1 4 3 0.3
+0 5 0.3
+1 5 3 0.3
+1 5 4 0.3
+2 5 4 3 0.3
+0 9 0.3
+0 10 0.3
+1 10 2 0.3
+1 10 9 0.3
+1 11 9 0.3
+1 11 10 0.3
+2 11 10 9 0.3
+0 12 0.3
+1 12 2 0.3
+1 12 10 0.3
+2 12 10 2 0.3
+1 6 0 0.4
+1 6 1 0.4
+2 6 1 0 0.4
+0 7 0.4
+1 7 0 0.4
+1 7 1 0.4
+2 7 1 0 0.4
+1 7 6 0.4
+2 7 6 0 0.4
+2 7 6 1 0.4
+3 7 6 1 0 0.4
+0 8 0.4
+1 8 4 0.4
+1 8 5 0.4
+2 8 5 4 0.4
+1 9 4 0.4
+1 9 5 0.4
+2 9 5 4 0.4
+1 9 8 0.4
+2 9 8 4 0.4
+2 9 8 5 0.4
+3 9 8 5 4 0.4
diff --git a/src/Persistent_cohomology/test/simplex_tree_file_for_multi_field_unit_test.txt.REMOVED.git-id b/src/Persistent_cohomology/test/simplex_tree_file_for_multi_field_unit_test.txt.REMOVED.git-id
deleted file mode 100644
index 2dd38515..00000000
--- a/src/Persistent_cohomology/test/simplex_tree_file_for_multi_field_unit_test.txt.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-ce87199d425b05f51c74cbf635870bfa5abbc7a1 \ No newline at end of file
diff --git a/src/Simplex_tree/example/simple_simplex_tree.cpp b/src/Simplex_tree/example/simple_simplex_tree.cpp
index bde224f1..6d20e43e 100644
--- a/src/Simplex_tree/example/simple_simplex_tree.cpp
+++ b/src/Simplex_tree/example/simple_simplex_tree.cpp
@@ -28,7 +28,6 @@
using namespace Gudhi;
typedef std::vector< Vertex_handle > typeVectorVertex;
-typedef std::pair<typeVectorVertex, Filtration_value> typeSimplex;
typedef std::pair< Simplex_tree<>::Simplex_handle, bool > typePairSimplexBool;
int main(int argc, char * const argv[]) {
@@ -58,9 +57,8 @@ int main(int argc, char * const argv[]) {
std::cout << " * INSERT 0" << std::endl;
typeVectorVertex firstSimplexVector;
firstSimplexVector.push_back(FIRST_VERTEX_HANDLE);
- typeSimplex firstSimplex = std::make_pair(firstSimplexVector, Filtration_value(FIRST_FILTRATION_VALUE));
typePairSimplexBool returnValue =
- simplexTree.insert_simplex(firstSimplex.first, firstSimplex.second);
+ simplexTree.insert_simplex(firstSimplexVector, Filtration_value(FIRST_FILTRATION_VALUE));
if (returnValue.second == true) {
std::cout << " + 0 INSERTED" << std::endl;
@@ -74,9 +72,8 @@ int main(int argc, char * const argv[]) {
std::cout << " * INSERT 1" << std::endl;
typeVectorVertex secondSimplexVector;
secondSimplexVector.push_back(SECOND_VERTEX_HANDLE);
- typeSimplex secondSimplex = std::make_pair(secondSimplexVector, Filtration_value(FIRST_FILTRATION_VALUE));
returnValue =
- simplexTree.insert_simplex(secondSimplex.first, secondSimplex.second);
+ simplexTree.insert_simplex(secondSimplexVector, Filtration_value(FIRST_FILTRATION_VALUE));
if (returnValue.second == true) {
std::cout << " + 1 INSERTED" << std::endl;
@@ -91,9 +88,8 @@ int main(int argc, char * const argv[]) {
typeVectorVertex thirdSimplexVector;
thirdSimplexVector.push_back(FIRST_VERTEX_HANDLE);
thirdSimplexVector.push_back(SECOND_VERTEX_HANDLE);
- typeSimplex thirdSimplex = std::make_pair(thirdSimplexVector, Filtration_value(SECOND_FILTRATION_VALUE));
returnValue =
- simplexTree.insert_simplex(thirdSimplex.first, thirdSimplex.second);
+ simplexTree.insert_simplex(thirdSimplexVector, Filtration_value(SECOND_FILTRATION_VALUE));
if (returnValue.second == true) {
std::cout << " + (0,1) INSERTED" << std::endl;
@@ -107,9 +103,8 @@ int main(int argc, char * const argv[]) {
std::cout << " * INSERT 2" << std::endl;
typeVectorVertex fourthSimplexVector;
fourthSimplexVector.push_back(THIRD_VERTEX_HANDLE);
- typeSimplex fourthSimplex = std::make_pair(fourthSimplexVector, Filtration_value(FIRST_FILTRATION_VALUE));
returnValue =
- simplexTree.insert_simplex(fourthSimplex.first, fourthSimplex.second);
+ simplexTree.insert_simplex(fourthSimplexVector, Filtration_value(FIRST_FILTRATION_VALUE));
if (returnValue.second == true) {
std::cout << " + 2 INSERTED" << std::endl;
@@ -124,9 +119,8 @@ int main(int argc, char * const argv[]) {
typeVectorVertex fifthSimplexVector;
fifthSimplexVector.push_back(THIRD_VERTEX_HANDLE);
fifthSimplexVector.push_back(FIRST_VERTEX_HANDLE);
- typeSimplex fifthSimplex = std::make_pair(fifthSimplexVector, Filtration_value(SECOND_FILTRATION_VALUE));
returnValue =
- simplexTree.insert_simplex(fifthSimplex.first, fifthSimplex.second);
+ simplexTree.insert_simplex(fifthSimplexVector, Filtration_value(SECOND_FILTRATION_VALUE));
if (returnValue.second == true) {
std::cout << " + (2,0) INSERTED" << std::endl;
@@ -141,9 +135,8 @@ int main(int argc, char * const argv[]) {
typeVectorVertex sixthSimplexVector;
sixthSimplexVector.push_back(THIRD_VERTEX_HANDLE);
sixthSimplexVector.push_back(SECOND_VERTEX_HANDLE);
- typeSimplex sixthSimplex = std::make_pair(sixthSimplexVector, Filtration_value(SECOND_FILTRATION_VALUE));
returnValue =
- simplexTree.insert_simplex(sixthSimplex.first, sixthSimplex.second);
+ simplexTree.insert_simplex(sixthSimplexVector, Filtration_value(SECOND_FILTRATION_VALUE));
if (returnValue.second == true) {
std::cout << " + (2,1) INSERTED" << std::endl;
@@ -159,9 +152,8 @@ int main(int argc, char * const argv[]) {
seventhSimplexVector.push_back(THIRD_VERTEX_HANDLE);
seventhSimplexVector.push_back(SECOND_VERTEX_HANDLE);
seventhSimplexVector.push_back(FIRST_VERTEX_HANDLE);
- typeSimplex seventhSimplex = std::make_pair(seventhSimplexVector, Filtration_value(THIRD_FILTRATION_VALUE));
returnValue =
- simplexTree.insert_simplex(seventhSimplex.first, seventhSimplex.second);
+ simplexTree.insert_simplex(seventhSimplexVector, Filtration_value(THIRD_FILTRATION_VALUE));
if (returnValue.second == true) {
std::cout << " + (2,1,0) INSERTED" << std::endl;
@@ -175,9 +167,8 @@ int main(int argc, char * const argv[]) {
std::cout << " * INSERT 3" << std::endl;
typeVectorVertex eighthSimplexVector;
eighthSimplexVector.push_back(FOURTH_VERTEX_HANDLE);
- typeSimplex eighthSimplex = std::make_pair(eighthSimplexVector, Filtration_value(FIRST_FILTRATION_VALUE));
returnValue =
- simplexTree.insert_simplex(eighthSimplex.first, eighthSimplex.second);
+ simplexTree.insert_simplex(eighthSimplexVector, Filtration_value(FIRST_FILTRATION_VALUE));
if (returnValue.second == true) {
std::cout << " + 3 INSERTED" << std::endl;
@@ -192,9 +183,8 @@ int main(int argc, char * const argv[]) {
typeVectorVertex ninethSimplexVector;
ninethSimplexVector.push_back(FOURTH_VERTEX_HANDLE);
ninethSimplexVector.push_back(FIRST_VERTEX_HANDLE);
- typeSimplex ninethSimplex = std::make_pair(ninethSimplexVector, Filtration_value(SECOND_FILTRATION_VALUE));
returnValue =
- simplexTree.insert_simplex(ninethSimplex.first, ninethSimplex.second);
+ simplexTree.insert_simplex(ninethSimplexVector, Filtration_value(SECOND_FILTRATION_VALUE));
if (returnValue.second == true) {
std::cout << " + (3,0) INSERTED" << std::endl;
@@ -208,9 +198,8 @@ int main(int argc, char * const argv[]) {
std::cout << " * INSERT 0 (already inserted)" << std::endl;
typeVectorVertex tenthSimplexVector;
tenthSimplexVector.push_back(FIRST_VERTEX_HANDLE);
- typeSimplex tenthSimplex = std::make_pair(tenthSimplexVector, Filtration_value(FOURTH_FILTRATION_VALUE)); // With a different filtration value
returnValue =
- simplexTree.insert_simplex(tenthSimplex.first, tenthSimplex.second);
+ simplexTree.insert_simplex(tenthSimplexVector, Filtration_value(FOURTH_FILTRATION_VALUE)); // With a different filtration value
if (returnValue.second == true) {
std::cout << " + 0 INSERTED" << std::endl;
@@ -226,9 +215,8 @@ int main(int argc, char * const argv[]) {
eleventhSimplexVector.push_back(THIRD_VERTEX_HANDLE);
eleventhSimplexVector.push_back(SECOND_VERTEX_HANDLE);
eleventhSimplexVector.push_back(FIRST_VERTEX_HANDLE);
- typeSimplex eleventhSimplex = std::make_pair(eleventhSimplexVector, Filtration_value(FOURTH_FILTRATION_VALUE));
returnValue =
- simplexTree.insert_simplex(eleventhSimplex.first, eleventhSimplex.second);
+ simplexTree.insert_simplex(eleventhSimplexVector, Filtration_value(FOURTH_FILTRATION_VALUE));
if (returnValue.second == true) {
std::cout << " + (2,1,0) INSERTED" << std::endl;
diff --git a/src/Simplex_tree/test/CMakeLists.txt b/src/Simplex_tree/test/CMakeLists.txt
index 02ef9d8b..b6a1c0b6 100644
--- a/src/Simplex_tree/test/CMakeLists.txt
+++ b/src/Simplex_tree/test/CMakeLists.txt
@@ -1,21 +1,25 @@
cmake_minimum_required(VERSION 2.6)
-project(GUDHITestSimplexTree)
+project(GUDHISimplexTreeUT)
-if(NOT MSVC)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage")
- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} --coverage")
- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} --coverage")
+if (GCOVR_PATH)
+ # for gcovr to make coverage reports - Corbera Jenkins plugin
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
+ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage")
+ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fprofile-arcs -ftest-coverage")
+endif()
+if (GPROF_PATH)
+ # for gprof to make coverage reports - Jenkins
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg")
+ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg")
+ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -pg")
endif()
-add_executable ( simplex_tree_unit_test simplex_tree_unit_test.cpp )
-target_link_libraries(simplex_tree_unit_test ${Boost_SYSTEM_LIBRARY} ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
+add_executable ( SimplexTreeUT simplex_tree_unit_test.cpp )
+target_link_libraries(SimplexTreeUT ${Boost_SYSTEM_LIBRARY} ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
# Unitary tests
-add_test(simplex_tree_unit_test ${CMAKE_CURRENT_BINARY_DIR}/simplex_tree_unit_test)
-
-if (LCOV_PATH)
- # Lcov code coverage of unitary test
- add_test(src/Simplex_tree/lcov/coverage.log ${CMAKE_SOURCE_DIR}/scripts/check_code_coverage.sh ${CMAKE_SOURCE_DIR}/src/Simplex_tree)
-endif()
+add_test(NAME SimplexTreeUT
+ COMMAND ${CMAKE_CURRENT_BINARY_DIR}/SimplexTreeUT
+ # XML format for Jenkins xUnit plugin
+ --log_format=XML --log_sink=${CMAKE_SOURCE_DIR}/SimplexTreeUT.xml --log_level=test_suite --report_level=no)
-cpplint_add_tests("${CMAKE_SOURCE_DIR}/src/Simplex_tree/include/gudhi")
diff --git a/src/Simplex_tree/test/README b/src/Simplex_tree/test/README
index 620bcd5f..21c3d871 100644
--- a/src/Simplex_tree/test/README
+++ b/src/Simplex_tree/test/README
@@ -1,12 +1,14 @@
To compile:
***********
+cd /path-to-gudhi/
cmake .
+cd /path-to-test/
make
To launch with details:
***********************
-./simplex_tree_unit_test --report_level=detailed --log_level=all
+./SimplexTreeUT --report_level=detailed --log_level=all
==> echo $? returns 0 in case of success (non-zero otherwise)
diff --git a/src/Simplex_tree/test/simplex_tree_unit_test.cpp b/src/Simplex_tree/test/simplex_tree_unit_test.cpp
index c0cfced1..6b0a1f3d 100644
--- a/src/Simplex_tree/test/simplex_tree_unit_test.cpp
+++ b/src/Simplex_tree/test/simplex_tree_unit_test.cpp
@@ -1,4 +1,4 @@
-#define BOOST_TEST_MODULE const_string test
+#define BOOST_TEST_MODULE simplex_tree test
#include <boost/test/included/unit_test.hpp>
#include <boost/system/error_code.hpp>
#include <boost/chrono/thread_clock.hpp>
diff --git a/src/Skeleton_blocker/test/CMakeLists.txt b/src/Skeleton_blocker/test/CMakeLists.txt
index c69bfec7..e62600a2 100644
--- a/src/Skeleton_blocker/test/CMakeLists.txt
+++ b/src/Skeleton_blocker/test/CMakeLists.txt
@@ -1,12 +1,17 @@
cmake_minimum_required(VERSION 2.6)
project(GUDHIskbl)
-if(NOT MSVC)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
-
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage")
- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} --coverage")
- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} --coverage")
+if (GCOVR_PATH)
+ # for gcovr to make coverage reports - Corbera Jenkins plugin
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
+ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage")
+ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fprofile-arcs -ftest-coverage")
+endif()
+if (GPROF_PATH)
+ # for gprof to make coverage reports - Jenkins
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg")
+ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg")
+ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -pg")
endif()
add_executable(TestSkeletonBlockerComplex TestSkeletonBlockerComplex.cpp)
@@ -17,10 +22,3 @@ add_test(TestSkeletonBlockerComplex ${CMAKE_CURRENT_BINARY_DIR}/TestSkeletonBloc
add_test(TestSimplifiable ${CMAKE_CURRENT_BINARY_DIR}/TestSimplifiable)
add_test(TestGeometricComplex ${CMAKE_CURRENT_BINARY_DIR}/TestGeometricComplex)
-
-if (LCOV_PATH)
- # Lcov code coverage of unitary test
- add_test(src/Skeleton_blocker/lcov/coverage.log ${CMAKE_SOURCE_DIR}/scripts/check_code_coverage.sh ${CMAKE_SOURCE_DIR}/src/Skeleton_blocker)
-endif()
-
-cpplint_add_tests("${CMAKE_SOURCE_DIR}/src/Skeleton_blocker/include/gudhi")
diff --git a/src/cmake/modules/FindQGLViewer.cmake b/src/cmake/modules/FindQGLViewer.cmake
new file mode 100644
index 00000000..65723d67
--- /dev/null
+++ b/src/cmake/modules/FindQGLViewer.cmake
@@ -0,0 +1,61 @@
+# - Try to find QGLViewer
+# Once done this will define
+#
+# QGLVIEWER_FOUND - system has QGLViewer
+# QGLVIEWER_INCLUDE_DIR - the QGLViewer include directory
+# QGLVIEWER_LIBRARIES - Link these to use QGLViewer
+# QGLVIEWER_DEFINITIONS - Compiler switches required for using QGLViewer
+#
+
+find_path(QGLVIEWER_INCLUDE_DIR
+ NAMES QGLViewer/qglviewer.h
+ PATHS /usr/include
+ /usr/local/include
+ ENV QGLVIEWERROOT
+ )
+
+find_library(QGLVIEWER_LIBRARY_RELEASE
+ NAMES qglviewer-qt4 qglviewer QGLViewer QGLViewer2
+ PATHS /usr/lib
+ /usr/local/lib
+ ENV QGLVIEWERROOT
+ ENV LD_LIBRARY_PATH
+ ENV LIBRARY_PATH
+ PATH_SUFFIXES QGLViewer QGLViewer/release
+ )
+
+find_library(QGLVIEWER_LIBRARY_DEBUG
+ NAMES dqglviewer dQGLViewer dQGLViewer2 QGLViewerd2
+ PATHS /usr/lib
+ /usr/local/lib
+ ENV QGLVIEWERROOT
+ ENV LD_LIBRARY_PATH
+ ENV LIBRARY_PATH
+ PATH_SUFFIXES QGLViewer QGLViewer/debug
+ )
+
+if(QGLVIEWER_LIBRARY_RELEASE)
+ if(QGLVIEWER_LIBRARY_DEBUG)
+ set(QGLVIEWER_LIBRARIES_ optimized ${QGLVIEWER_LIBRARY_RELEASE} debug ${QGLVIEWER_LIBRARY_DEBUG})
+ else()
+ set(QGLVIEWER_LIBRARIES_ ${QGLVIEWER_LIBRARY_RELEASE})
+ endif()
+
+ set(QGLVIEWER_LIBRARIES ${QGLVIEWER_LIBRARIES_} CACHE FILEPATH "The QGLViewer library")
+
+endif()
+
+IF(QGLVIEWER_INCLUDE_DIR AND QGLVIEWER_LIBRARIES)
+ SET(QGLVIEWER_FOUND TRUE)
+ENDIF(QGLVIEWER_INCLUDE_DIR AND QGLVIEWER_LIBRARIES)
+
+IF(QGLVIEWER_FOUND)
+ IF(NOT QGLViewer_FIND_QUIETLY)
+ MESSAGE(STATUS "Found QGLViewer: ${QGLVIEWER_LIBRARIES}")
+ ENDIF(NOT QGLViewer_FIND_QUIETLY)
+ELSE(QGLVIEWER_FOUND)
+ IF(QGLViewer_FIND_REQUIRED)
+ MESSAGE(FATAL_ERROR "Could not find QGLViewer")
+ ENDIF(QGLViewer_FIND_REQUIRED)
+ENDIF(QGLVIEWER_FOUND)
+
diff --git a/src/common/doc/main_page.h b/src/common/doc/main_page.h
index 83908905..315aa0ac 100644
--- a/src/common/doc/main_page.h
+++ b/src/common/doc/main_page.h
@@ -6,7 +6,8 @@
The Gudhi library (Geometric Understanding in Higher Dimensions) is a generic C++ library for
topological analysis of high-dimensional data whose goal is to provide robust, efficient, flexible and easy to use
implementations of
-state-of-the-art algorithms and data structures for computational topology.
+state-of-the-art algorithms and data structures for computational topology.
+This library is part of the <a href="https://project.inria.fr/gudhi/">Gudhi project</a>.
The current release of the library allows to use several data-structures for simplicial complexes :
simplex tree, Hasse diagram or skeleton-blocker. Several operations can then be done on top of these
@@ -17,48 +18,52 @@ We refer to
\cite gudhilibrary_ICMS14
for a detailed description of the design of the library.
+\section installation Gudhi installation
+
+As Gudhi is a header only library, there is no need to install the library.
+
+Examples of Gudhi headers inclusion can be found in \ref demos.
+
\section compiling Compiling
-The library uses c++11 and requires Boost with version 1.48.0 or more recent : http://www.boost.org/.
-It is a multiplaform library and compiles on Linux, Mac OSX and Visual Studio 2013.
+The library uses c++11 and requires <a href="http://www.boost.org/">Boost</a> with version 1.48.0 or more recent.
+It is a multi-platform library and compiles on Linux, Mac OSX and Visual Studio 2013.
\subsection gmp GMP:
The multi-field persistent homology algorithm requires GMP which is a free library for arbitrary-precision
-arithmetic, operating on signed integers, rational numbers, and floating point numbers
-The following examples require The GNU Multiple Precision Arithmetic Library (GMP) http://gmplib.org/
+arithmetic, operating on signed integers, rational numbers, and floating point numbers.
+
+The following examples require the <a href="http://gmplib.org/">GNU Multiple Precision Arithmetic Library</a> (GMP)
and will not be built if GMP is not installed:
- Persistent_cohomology/rips_multifield_persistence
- Simplex_tree/simplex_tree_from_alpha_shapes_3
-Having GMP version 4.2 or higher installed is recommended. This library can be obtained from http://gmplib.org/
+Having GMP version 4.2 or higher installed is recommended.
\subsection cgal CGAL:
CGAL is a C++ library which provides easy access to efficient and reliable geometric algorithms.
-The following example requires CGAL https://www.cgal.org/ and will not be built if CGAL is not installed:
+The following example requires the <a href="http://www.cgal.org/">Computational Geometry Algorithms Library</a> (CGAL)
+and will not be built if CGAL is not installed:
- Simplex_tree/simplex_tree_from_alpha_shapes_3
Having CGAL version 4.4 or higher installed is recommended. The procedure to install this library according to
your operating system is detailed here http://doc.cgal.org/latest/Manual/installation.html
-\section demos Demos and Examples
+\subsection demos Demos and examples
-To build the library, run the following in a terminal:
+To build the demos and libraries, run the following commands in a terminal:
\verbatim
cd /path-to-gudhi/
mkdir build
cd build/
-cmake -DCMAKE_BUILD_TYPE=Release ..
+cmake ..
make
\endverbatim
-
-
-
-
\details
\copyright GNU General Public License v3.