pye57 0.4.3__tar.gz → 0.4.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pye57 might be problematic. Click here for more details.

Files changed (184) hide show
  1. {pye57-0.4.3/src/pye57.egg-info → pye57-0.4.4}/PKG-INFO +1 -1
  2. pye57-0.4.4/libE57Format/LICENSE-MIT.md +21 -0
  3. pye57-0.4.4/libE57Format/README.md +162 -0
  4. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/extern/CRCpp/LICENSE +1 -1
  5. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/extern/CRCpp/README.md +68 -1
  6. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/extern/CRCpp/inc/CRC.h +440 -54
  7. pye57-0.4.4/libE57Format/include/E57Exception.h +397 -0
  8. pye57-0.4.4/libE57Format/include/E57Format.h +788 -0
  9. pye57-0.4.4/libE57Format/include/E57SimpleData.h +999 -0
  10. pye57-0.4.4/libE57Format/include/E57SimpleReader.h +214 -0
  11. pye57-0.4.4/libE57Format/include/E57SimpleWriter.h +210 -0
  12. pye57-0.4.4/libE57Format/include/E57Version.h +72 -0
  13. pye57-0.4.4/libE57Format/src/ASTMVersion.h +16 -0
  14. pye57-0.4.4/libE57Format/src/BlobNode.cpp +367 -0
  15. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/BlobNodeImpl.cpp +41 -34
  16. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/BlobNodeImpl.h +3 -2
  17. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/CheckedFile.cpp +785 -794
  18. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/CheckedFile.h +129 -128
  19. pye57-0.4.4/libE57Format/src/Common.h +82 -0
  20. pye57-0.4.4/libE57Format/src/CompressedVectorNode.cpp +480 -0
  21. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/CompressedVectorNodeImpl.cpp +82 -68
  22. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/CompressedVectorNodeImpl.h +7 -3
  23. pye57-0.4.4/libE57Format/src/CompressedVectorReader.cpp +356 -0
  24. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/CompressedVectorReaderImpl.cpp +172 -139
  25. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/CompressedVectorReaderImpl.h +8 -4
  26. pye57-0.4.4/libE57Format/src/CompressedVectorWriter.cpp +333 -0
  27. pye57-0.4.4/libE57Format/src/CompressedVectorWriterImpl.cpp +739 -0
  28. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/CompressedVectorWriterImpl.h +12 -8
  29. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/DecodeChannel.cpp +13 -9
  30. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/DecodeChannel.h +6 -5
  31. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/Decoder.cpp +280 -246
  32. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/Decoder.h +37 -23
  33. pye57-0.4.4/libE57Format/src/E57Exception.cpp +369 -0
  34. pye57-0.4.4/libE57Format/src/E57SimpleData.cpp +251 -0
  35. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/E57SimpleReader.cpp +44 -28
  36. pye57-0.4.4/libE57Format/src/E57SimpleWriter.cpp +298 -0
  37. pye57-0.4.4/libE57Format/src/E57Version.cpp +55 -0
  38. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/E57XmlParser.cpp +950 -918
  39. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/E57XmlParser.h +122 -125
  40. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/Encoder.cpp +266 -243
  41. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/Encoder.h +29 -23
  42. pye57-0.4.4/libE57Format/src/FloatNode.cpp +361 -0
  43. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/FloatNodeImpl.cpp +43 -42
  44. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/FloatNodeImpl.h +6 -4
  45. pye57-0.4.4/libE57Format/src/ImageFile.cpp +771 -0
  46. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/ImageFileImpl.cpp +282 -282
  47. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/ImageFileImpl.h +20 -15
  48. pye57-0.4.4/libE57Format/src/IntegerNode.cpp +324 -0
  49. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/IntegerNodeImpl.cpp +23 -21
  50. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/IntegerNodeImpl.h +5 -4
  51. pye57-0.4.4/libE57Format/src/Node.cpp +604 -0
  52. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/NodeImpl.cpp +104 -100
  53. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/NodeImpl.h +15 -10
  54. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/Packet.cpp +240 -197
  55. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/Packet.h +22 -13
  56. pye57-0.4.4/libE57Format/src/ReaderImpl.cpp +1746 -0
  57. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/ReaderImpl.h +21 -35
  58. pye57-0.4.4/libE57Format/src/ScaledIntegerNode.cpp +481 -0
  59. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/ScaledIntegerNodeImpl.cpp +47 -37
  60. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/ScaledIntegerNodeImpl.h +9 -6
  61. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/SectionHeaders.cpp +34 -19
  62. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/SectionHeaders.h +4 -3
  63. pye57-0.4.4/libE57Format/src/SourceDestBuffer.cpp +478 -0
  64. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/SourceDestBufferImpl.cpp +253 -235
  65. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/SourceDestBufferImpl.h +44 -21
  66. pye57-0.4.4/libE57Format/src/StringFunctions.cpp +73 -0
  67. pye57-0.4.3/libE57Format/src/Common.h → pye57-0.4.4/libE57Format/src/StringFunctions.h +206 -183
  68. pye57-0.4.4/libE57Format/src/StringNode.cpp +254 -0
  69. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/StringNodeImpl.cpp +17 -16
  70. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/StringNodeImpl.h +3 -2
  71. pye57-0.4.4/libE57Format/src/StructureNode.cpp +413 -0
  72. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/StructureNodeImpl.cpp +90 -90
  73. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/StructureNodeImpl.h +7 -4
  74. pye57-0.4.4/libE57Format/src/VectorNode.cpp +435 -0
  75. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/VectorNodeImpl.cpp +19 -16
  76. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/VectorNodeImpl.h +7 -2
  77. pye57-0.4.4/libE57Format/src/WriterImpl.cpp +1374 -0
  78. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/WriterImpl.h +13 -17
  79. pye57-0.4.4/libE57Format/test/README.md +43 -0
  80. pye57-0.4.4/libE57Format/test/extern/googletest/LICENSE +28 -0
  81. pye57-0.4.4/libE57Format/test/extern/googletest/README.md +123 -0
  82. pye57-0.4.4/libE57Format/test/extern/googletest/googlemock/README.md +40 -0
  83. pye57-0.4.4/libE57Format/test/extern/googletest/googlemock/docs/README.md +4 -0
  84. pye57-0.4.4/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock-actions.h +2297 -0
  85. pye57-0.4.4/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock-cardinalities.h +159 -0
  86. pye57-0.4.4/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock-function-mocker.h +518 -0
  87. pye57-0.4.4/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock-matchers.h +5619 -0
  88. pye57-0.4.4/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock-more-actions.h +658 -0
  89. pye57-0.4.4/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock-more-matchers.h +120 -0
  90. pye57-0.4.4/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock-nice-strict.h +277 -0
  91. pye57-0.4.4/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock-spec-builders.h +2111 -0
  92. pye57-0.4.4/libE57Format/test/extern/googletest/googlemock/include/gmock/gmock.h +96 -0
  93. pye57-0.4.4/libE57Format/test/extern/googletest/googlemock/include/gmock/internal/custom/README.md +18 -0
  94. pye57-0.4.4/libE57Format/test/extern/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h +7 -0
  95. pye57-0.4.4/libE57Format/test/extern/googletest/googlemock/include/gmock/internal/custom/gmock-matchers.h +37 -0
  96. pye57-0.4.4/libE57Format/test/extern/googletest/googlemock/include/gmock/internal/custom/gmock-port.h +40 -0
  97. pye57-0.4.4/libE57Format/test/extern/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h +484 -0
  98. pye57-0.4.4/libE57Format/test/extern/googletest/googlemock/include/gmock/internal/gmock-port.h +139 -0
  99. pye57-0.4.4/libE57Format/test/extern/googletest/googlemock/include/gmock/internal/gmock-pp.h +279 -0
  100. pye57-0.4.4/libE57Format/test/extern/googletest/googlemock/test/gmock-matchers_test.h +192 -0
  101. pye57-0.4.4/libE57Format/test/extern/googletest/googlemock/test/gmock_link_test.h +684 -0
  102. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/README.md +231 -0
  103. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/docs/README.md +4 -0
  104. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-assertion-result.h +237 -0
  105. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-death-test.h +345 -0
  106. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-matchers.h +956 -0
  107. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-message.h +220 -0
  108. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-param-test.h +546 -0
  109. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-printers.h +1137 -0
  110. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-spi.h +250 -0
  111. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-test-part.h +192 -0
  112. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/include/gtest/gtest-typed-test.h +331 -0
  113. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/include/gtest/gtest.h +2318 -0
  114. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/include/gtest/gtest_pred_impl.h +279 -0
  115. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/include/gtest/gtest_prod.h +60 -0
  116. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/include/gtest/internal/custom/README.md +44 -0
  117. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/include/gtest/internal/custom/gtest-port.h +37 -0
  118. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/include/gtest/internal/custom/gtest-printers.h +42 -0
  119. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/include/gtest/internal/custom/gtest.h +37 -0
  120. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h +307 -0
  121. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/include/gtest/internal/gtest-filepath.h +227 -0
  122. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/include/gtest/internal/gtest-internal.h +1557 -0
  123. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/include/gtest/internal/gtest-param-util.h +1026 -0
  124. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/include/gtest/internal/gtest-port-arch.h +118 -0
  125. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/include/gtest/internal/gtest-port.h +2450 -0
  126. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/include/gtest/internal/gtest-string.h +178 -0
  127. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/include/gtest/internal/gtest-type-util.h +190 -0
  128. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/samples/prime_tables.h +125 -0
  129. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/samples/sample1.h +41 -0
  130. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/samples/sample2.h +79 -0
  131. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/samples/sample3-inl.h +171 -0
  132. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/samples/sample4.h +53 -0
  133. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/src/gtest-internal-inl.h +1218 -0
  134. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/test/googletest-param-test-test.h +49 -0
  135. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/test/gtest-typed-test_test.h +57 -0
  136. pye57-0.4.4/libE57Format/test/extern/googletest/googletest/test/production.h +55 -0
  137. pye57-0.4.4/libE57Format/test/include/Helpers.h +25 -0
  138. pye57-0.4.4/libE57Format/test/include/RandomNum.h +14 -0
  139. pye57-0.4.4/libE57Format/test/include/TestData.h +12 -0
  140. pye57-0.4.4/libE57Format/test/src/RandomNum.cpp +33 -0
  141. pye57-0.4.4/libE57Format/test/src/TestData.cpp +49 -0
  142. pye57-0.4.4/libE57Format/test/src/main.cpp +53 -0
  143. pye57-0.4.4/libE57Format/test/src/test_SimpleData.cpp +278 -0
  144. pye57-0.4.4/libE57Format/test/src/test_SimpleReader.cpp +370 -0
  145. pye57-0.4.4/libE57Format/test/src/test_SimpleWriter.cpp +707 -0
  146. pye57-0.4.4/libE57Format/test/src/test_StringFunctions.cpp +67 -0
  147. {pye57-0.4.3 → pye57-0.4.4}/pyproject.toml +0 -1
  148. pye57-0.4.4/src/pye57/__version__.py +1 -0
  149. {pye57-0.4.3 → pye57-0.4.4}/src/pye57/libe57_wrapper.cpp +47 -42
  150. {pye57-0.4.3 → pye57-0.4.4/src/pye57.egg-info}/PKG-INFO +1 -1
  151. pye57-0.4.4/src/pye57.egg-info/SOURCES.txt +208 -0
  152. {pye57-0.4.3 → pye57-0.4.4}/tests/test_main.py +4 -5
  153. pye57-0.4.3/libE57Format/README.md +0 -64
  154. pye57-0.4.3/libE57Format/include/E57Exception.h +0 -136
  155. pye57-0.4.3/libE57Format/include/E57Format.h +0 -696
  156. pye57-0.4.3/libE57Format/include/E57SimpleData.h +0 -653
  157. pye57-0.4.3/libE57Format/include/E57SimpleReader.h +0 -186
  158. pye57-0.4.3/libE57Format/include/E57SimpleWriter.h +0 -137
  159. pye57-0.4.3/libE57Format/src/CompressedVectorWriterImpl.cpp +0 -660
  160. pye57-0.4.3/libE57Format/src/E57Exception.cpp +0 -451
  161. pye57-0.4.3/libE57Format/src/E57Format.cpp +0 -4891
  162. pye57-0.4.3/libE57Format/src/E57SimpleData.cpp +0 -25
  163. pye57-0.4.3/libE57Format/src/E57SimpleWriter.cpp +0 -103
  164. pye57-0.4.3/libE57Format/src/E57Version.h +0 -12
  165. pye57-0.4.3/libE57Format/src/ReaderImpl.cpp +0 -1433
  166. pye57-0.4.3/libE57Format/src/WriterImpl.cpp +0 -1109
  167. pye57-0.4.3/src/pye57/__version__.py +0 -1
  168. pye57-0.4.3/src/pye57.egg-info/SOURCES.txt +0 -109
  169. {pye57-0.4.3 → pye57-0.4.4}/LICENSE +0 -0
  170. {pye57-0.4.3 → pye57-0.4.4}/MANIFEST.in +0 -0
  171. {pye57-0.4.3 → pye57-0.4.4}/README.md +0 -0
  172. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/LICENSE.md +0 -0
  173. {pye57-0.4.3 → pye57-0.4.4}/libE57Format/src/Common.cpp +0 -0
  174. {pye57-0.4.3 → pye57-0.4.4}/setup.cfg +0 -0
  175. {pye57-0.4.3 → pye57-0.4.4}/setup.py +0 -0
  176. {pye57-0.4.3 → pye57-0.4.4}/src/pye57/__init__.py +0 -0
  177. {pye57-0.4.3 → pye57-0.4.4}/src/pye57/e57.py +0 -0
  178. {pye57-0.4.3 → pye57-0.4.4}/src/pye57/exception.py +0 -0
  179. {pye57-0.4.3 → pye57-0.4.4}/src/pye57/scan_header.py +0 -0
  180. {pye57-0.4.3 → pye57-0.4.4}/src/pye57/utils.py +0 -0
  181. {pye57-0.4.3 → pye57-0.4.4}/src/pye57.egg-info/dependency_links.txt +0 -0
  182. {pye57-0.4.3 → pye57-0.4.4}/src/pye57.egg-info/not-zip-safe +0 -0
  183. {pye57-0.4.3 → pye57-0.4.4}/src/pye57.egg-info/requires.txt +0 -0
  184. {pye57-0.4.3 → pye57-0.4.4}/src/pye57.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pye57
3
- Version: 0.4.3
3
+ Version: 0.4.4
4
4
  Summary: Python .e57 files reader/writer
5
5
  Home-page: https://www.github.com/davidcaron/pye57
6
6
  Author: David Caron
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2020 Andy Maloney (asmaloney@gmail.com)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,162 @@
1
+ # libE57Format
2
+
3
+ [![GitHub release (latest by date)](https://img.shields.io/github/v/release/asmaloney/libE57Format)](https://github.com/asmaloney/libE57Format/releases/latest) [![Docs](https://img.shields.io/badge/docs-online-orange)](https://asmaloney.github.io/libE57Format-docs/) [![GitHub](https://img.shields.io/github/license/asmaloney/libE57Format)](LICENSE) ![Build](https://github.com/asmaloney/libE57Format/actions/workflows/build.yml/badge.svg)
4
+
5
+ libE57Format is a C++ library which provides read & write support for the ASTM-standard [E57 file format](https://www.astm.org/e2807-11r19e01.html) on Linux, macOS, and Windows. E57 files store 3D point cloud data (produced by 3D imaging systems such as laser scanners), attributes associated with 3D point data (color & intensity), and 2D images (photos taken using a 3D imaging system).
6
+
7
+ ## Documentation
8
+
9
+ The doxygen-generated documentation may be [found here](https://asmaloney.github.io/libE57Format-docs/). These docs are generated and saved in the [libE57Format-docs](https://github.com/asmaloney/libE57Format-docs) repo.
10
+
11
+ ## Dependencies/Requirements
12
+
13
+ Tools:
14
+
15
+ - a [C++14](https://en.cppreference.com/w/cpp/14) compatible compiler
16
+ - [CMake](https://cmake.org/) >= 3.15
17
+ - [clang-format](https://clang.llvm.org/docs/ClangFormat.html) for code formatting
18
+ - (_optional_) [ccache](https://ccache.dev/) to speed up rebuilds
19
+
20
+ Libraries:
21
+
22
+ - [Xerces-C++](https://xerces.apache.org/xerces-c/) (for parsing XML)
23
+
24
+ ### Installing Dependencies On Linux (Ubuntu)
25
+
26
+ ```sh
27
+ $ sudo apt install libxerces-c-dev clang-format
28
+ ```
29
+
30
+ ### Installing Dependencies On macOS (homebrew)
31
+
32
+ ```sh
33
+ $ brew install ccache clang-format xerces-c
34
+ ```
35
+
36
+ ## Build, Install, & Test
37
+
38
+ Here's how you build & install a release version with the defaults:
39
+
40
+ ```
41
+ $ cmake -B E57-build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=E57-install libE57Format
42
+ $ cmake --build E57-build --parallel
43
+ $ cmake --install E57-build
44
+ ```
45
+
46
+ If CMake can't find the xerces-c library, you can set [CMAKE_PREFIX_PATH](https://cmake.org/cmake/help/latest/variable/CMAKE_PREFIX_PATH.html) to point at it.
47
+
48
+ ```
49
+ $ cmake -B E57-build \
50
+ -DCMAKE_BUILD_TYPE=Release \
51
+ -DCMAKE_INSTALL_PREFIX=E57-install \
52
+ -DCMAKE_PREFIX_PATH=/path/to/xerces-c \
53
+ libE57Format
54
+ ```
55
+
56
+ Once the library is built, you can run the tests like this:
57
+
58
+ ```
59
+ $ cd E57-build
60
+ $ ./test/testE57
61
+ [==========] Running 36 tests from 8 test suites.
62
+ [----------] Global test environment set-up.
63
+ [----------] 1 test from TestData
64
+ [ RUN ] TestData.RepoExists
65
+ ...
66
+ ```
67
+
68
+ See [test/README](test/README.md) for details about testing and the test data.
69
+
70
+ ## 🍴 Fork
71
+
72
+ This is a fork of [E57RefImpl](https://sourceforge.net/projects/e57-3d-imgfmt/). The original source is from [E57RefImpl 1.1.332](https://sourceforge.net/projects/e57-3d-imgfmt/files/E57Refimpl-src/).
73
+
74
+ The original code had not been touched in years and I wanted to make changes to compile it on macOS. Forking it gave me a bit more freedom to update the code and make changes as required. Everything was stripped out except the main implementation for reading & writing E57 files.
75
+
76
+ Notes:
77
+
78
+ - I changed the name of the project so that it is not confused with the **E57RefImpl** project.
79
+ - I changed the main include file's name from `E57Foundation.h` to `E57Format.h` to make sure there is no inclusion confusion.
80
+ - Versions of **libE57Format** started at 2.0.
81
+ - I made changes for it to compile and run on macOS.
82
+ - It no longer depends on [Boost](http://www.boost.org/).
83
+ - It now requires [C++14](https://en.cppreference.com/w/cpp/14). (Version 2.x required [C++11](https://en.cppreference.com/w/cpp/11).)
84
+
85
+ Many, many other changes were made prior to the first release of this fork. See the [CHANGELOG](CHANGELOG.md) and git history for details.
86
+
87
+ ### E57Simple API
88
+
89
+ [Jiri Hörner](https://github.com/ptc-jhoerner) added the E57Simple API from the old reference implementation and updated it.
90
+
91
+ This _Simple API_ has evolved since this original port to fix some problems and to make it more foolproof & easier to use. Please see the [CHANGELOG](CHANGELOG.md) for version 3.
92
+
93
+ ### Tools
94
+
95
+ [Ryan Baumann](https://github.com/ryanfb) updated the `e57unpack` and `e57validate` tools to work with **libE57Format**. You can find them in the [e57tools](https://github.com/ryanfb/e57tools) repo.
96
+
97
+ ## Projects Using libE57Format
98
+
99
+ - [CloudCompare](https://github.com/CloudCompare/CloudCompare)
100
+ - [MeshLab](https://github.com/cnr-isti-vclab/meshlab)
101
+ - [pye57](https://github.com/davidcaron/pye57)
102
+
103
+ These projects use hard forks of libE57Format:
104
+
105
+ - [FreeCAD](https://github.com/FreeCAD/FreeCAD)
106
+ - [PDAL](https://github.com/PDAL/PDAL)
107
+
108
+ There are also some commercial products using libE57Format. If any of them would like to sponsor the project and be listed here, please contact Andy (asmaloney).
109
+
110
+ ## How To Contribute
111
+
112
+ These are some of the things you can do to contribute to the project:
113
+
114
+ ### ✍ Write About The Project
115
+
116
+ If you find the project useful, spread the word! Articles, mastodon posts, tweets, blog posts, instagram photos - whatever you're into.
117
+
118
+ ### ⭐️ Add a Star
119
+
120
+ If you found this project useful, please consider starring it! It helps me gauge how useful this project is.
121
+
122
+ ### ☝ Raise Issues
123
+
124
+ If you run into something which doesn't work as expected, raising [an issue](https://github.com/asmaloney/libE57Format/issues) with all the relevant information to reproduce it would be helpful.
125
+
126
+ ### 🐞 Bug Fixes & 🧪 New Things
127
+
128
+ I am happy to review any [pull requests](https://github.com/asmaloney/libE57Format/pulls). Please keep them as short as possible. Each pull request should be atomic and only address one issue. This helps with the review process.
129
+
130
+ Note that I will not accept everything, but I welcome discussion. If you are proposing a big change, please raise it as [an issue](https://github.com/asmaloney/libE57Format/issues) first for discussion.
131
+
132
+ #### Formatting
133
+
134
+ This project uses [clang-format](https://clang.llvm.org/docs/ClangFormat.html) to format the code. There is a cmake target (_e57-clang-format_) - which runs _clang-format_ on the source files. After changes have been made, and before you submit your pull request, please run the following:
135
+
136
+ ```sh
137
+ cmake --build . --target e57-clang-format
138
+ ```
139
+
140
+ ### 📖 Documentation
141
+
142
+ The [documentation](https://github.com/asmaloney/libE57Format) is a bit old and could use some lovin'. You can submit changes over in the [libE57Format-docs](https://github.com/asmaloney/libE57Format-docs) repository.
143
+
144
+ ### 💰 Financial
145
+
146
+ Given that I'm an independent developer without funding, financial support is always appreciated. If you would like to support the project financially (especially if you sell a product which uses this library), you can use the [sponsors page](https://github.com/sponsors/asmaloney) for one-off or recurring support. Thank you!
147
+
148
+ ## License
149
+
150
+ This project as a whole is licensed under the [**BSL-1.0** license](https://opensource.org/licenses/BSL-1.0) - see the [LICENSE](LICENSE.md) file for details.
151
+
152
+ Individual source files may contain the following tag instead of the full license text:
153
+
154
+ SPDX-License-Identifier: BSL-1.0
155
+
156
+ Most of the CMake files, all of the testing files, and a couple of the source files are licensed under the [**MIT** license](https://opensource.org/license/mit/) - see the [LICENSE-MIT](LICENSE-MIT.md) file for details.
157
+
158
+ These files contain the following tag instead of the full license text:
159
+
160
+ SPDX-License-Identifier: MIT
161
+
162
+ Using SPDX enables machine processing of license information based on the [SPDX License Identifiers](https://spdx.org/ids) and makes it easier for developers to see at a glance which license they are dealing with.
@@ -1,5 +1,5 @@
1
1
  CRC++
2
- Copyright (c) 2016, Daniel Bahr
2
+ Copyright (c) 2022, Daniel Bahr
3
3
  All rights reserved.
4
4
 
5
5
  Redistribution and use in source and binary forms, with or without
@@ -82,7 +82,24 @@ int main(int argc, char ** argv)
82
82
 
83
83
  This will return the same CRC as the first example.
84
84
 
85
- Both of the above examples compute a CRC bit-by-bit. However, CRC++ also supports lookup tables, as the following example demonstrates:
85
+ If you need to compute a CRC on an input that is not a multiple of `CHAR_BIT` (usually 8 bits), use the `CalculateBits()` function instead:
86
+
87
+ ```cpp
88
+ int main(int argc, char ** argv)
89
+ {
90
+ const unsigned char data[] = { 0x98, 0x76, 0x54, 0x32, 0x10 };
91
+
92
+ // Second argument is the number of bits. The input data must
93
+ // be a whole number of bytes. Pad any used bits with zeros.
94
+ std::uint32_t crc = CRC::CalculateBits(data, 37, CRC::CRC_32());
95
+
96
+ std::cout << std::hex << crc;
97
+
98
+ return 0;
99
+ }
100
+ ```
101
+
102
+ The above examples compute a CRC bit-by-bit. However, CRC++ also supports lookup tables, as the following example demonstrates:
86
103
 
87
104
  ```cpp
88
105
  int main(int argc, char ** argv)
@@ -149,6 +166,56 @@ Define to enables C++11 features (move semantics, constexpr, static_assert, etc.
149
166
  * `#define CRCPP_INCLUDE_ESOTERIC_CRC_DEFINITIONS`
150
167
  Define to include definitions for little-used CRCs. Not defined by default.
151
168
 
169
+ ### Build
170
+
171
+ CRC does not require a build for basic usage; simply include the header file in your project.
172
+
173
+ Unit tests and documentation can be built manually with the project files provided or automatically with CMake.
174
+
175
+ To build documentation manually:
176
+ ```bash
177
+ cd doxygen
178
+ doxygen Doxyfile.dox
179
+ ```
180
+
181
+ To build unit tests manually via Make:
182
+ ```bash
183
+ # Build
184
+ cd test/prj/gcc
185
+ make [debug|release]
186
+ # Run unit tests
187
+ bin/unittest
188
+ ```
189
+
190
+ Project files and solutions for Visual Studio 2015, 2017 and 2022 are provided in `test/prj`. Simply open the solution file and run the project; no additional configuration should be necessary.
191
+
192
+ CMake can also be used to build the documentation and unit tests. An out-of-source build is recommended. In this example, we will do an out-of-source build in the `build` directory:
193
+ ```bash
194
+ mkdir -p build
195
+ cd build
196
+ cmake .. [-DBUILD_DOC=ON]
197
+ # Build and run unit tests
198
+ make tests
199
+ # Build documentation
200
+ make doxygen
201
+ # Install header file
202
+ sudo make install
203
+ ```
204
+
205
+ Unit tests are built by default. Enable the `BUILD_DOC` CMake flag to also build documentation (requires [Doxygen](https://www.doxygen.nl/index.html)).
206
+
207
+ ### Documentation
208
+
209
+ https://d-bahr.github.io/CRCpp/
210
+
152
211
  ### License
153
212
 
154
213
  CRC++ is free to use and provided under a BSD license.
214
+
215
+ ### References
216
+
217
+ Catalog of CRCs: https://reveng.sourceforge.io/crc-catalogue/
218
+
219
+ 5G-NR Specification 3GPP TS 38.212: https://www.etsi.org/deliver/etsi_ts/138200_138299/138212/15.03.00_60/ts_138212v150300p.pdf
220
+
221
+ USB 2.0 Specification: https://www.usb.org/document-library/usb-20-specification