{"id":20296855,"url":"https://github.com/asmaloney/libe57format","last_synced_at":"2025-04-09T19:18:16.473Z","repository":{"id":30923608,"uuid":"126400545","full_name":"asmaloney/libE57Format","owner":"asmaloney","description":"Library for reading \u0026 writing the E57 file format","archived":false,"fork":false,"pushed_at":"2024-12-20T13:53:21.000Z","size":2015,"stargazers_count":142,"open_issues_count":24,"forks_count":69,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-09T19:18:08.320Z","etag":null,"topics":["cpp14","e57","file-format","file-format-library","file-io","library","point-cloud"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/asmaloney.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["asmaloney"]}},"created_at":"2018-03-22T22:07:21.000Z","updated_at":"2025-04-09T06:58:40.000Z","dependencies_parsed_at":"2023-10-24T13:29:10.259Z","dependency_job_id":"dae6a586-14b6-4eb4-a546-8c38c63a7560","html_url":"https://github.com/asmaloney/libE57Format","commit_stats":{"total_commits":451,"total_committers":24,"mean_commits":"18.791666666666668","dds":0.09756097560975607,"last_synced_commit":"f9cc0d2e5f46b0f887e3628c668ae00762e9ccd6"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asmaloney%2FlibE57Format","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asmaloney%2FlibE57Format/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asmaloney%2FlibE57Format/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asmaloney%2FlibE57Format/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asmaloney","download_url":"https://codeload.github.com/asmaloney/libE57Format/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248094989,"owners_count":21046770,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp14","e57","file-format","file-format-library","file-io","library","point-cloud"],"created_at":"2024-11-14T15:41:34.276Z","updated_at":"2025-04-09T19:18:16.438Z","avatar_url":"https://github.com/asmaloney.png","language":"C++","funding_links":["https://github.com/sponsors/asmaloney"],"categories":[],"sub_categories":[],"readme":"# libE57Format\n\n[![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)\n\nlibE57Format is a C++ library which provides read \u0026 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 \u0026 intensity), and 2D images (photos taken using a 3D imaging system).\n\n## Documentation\n\nThe 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.\n\n## Commercial Use\n\nIf you are using this library in commercial software, please [contribute to the project](/CONTRIBUTING.md).\n\nOf course the open source license allows you to just take and not give anything back. It is perfectly Legal, but it is not Right and it's not good for the project.\n\nOver the many years I've worked on this library, I have received precisely _zero_ contributions (PRs, documentation updates, improved testing, financial support) from the many million/billion-dollar companies who use it in their software.\n\nThe more companies that leech on Open Source instead of nurturing it, the less healthy \u0026 viable the ecosystem is.\n\n## Requirements\n\n- a [C++14](https://en.cppreference.com/w/cpp/14) compatible compiler\n- [CMake](https://cmake.org/) \u003e= 3.15\n- [clang-format](https://clang.llvm.org/docs/ClangFormat.html) for code formatting\n- (_optional_) [ccache](https://ccache.dev/) to speed up rebuilds\n\n## Dependencies\n\n- [Xerces-C++](https://xerces.apache.org/xerces-c/) (for parsing XML)\n\n### Installing Dependencies On Linux (Ubuntu)\n\n```sh\n$ sudo apt install libxerces-c-dev clang-format\n```\n\n### Installing Dependencies On macOS (homebrew)\n\n```sh\n$ brew install ccache clang-format xerces-c\n```\n\n## Build, Install, \u0026 Test\n\nHere's how you build \u0026 install a release version with the defaults:\n\n```\n$ cmake -B E57-build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=E57-install libE57Format\n$ cmake --build E57-build --parallel\n$ cmake --install E57-build\n```\n\nIf 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.\n\n```\n$ cmake -B E57-build \\\n    -DCMAKE_BUILD_TYPE=Release \\\n    -DCMAKE_INSTALL_PREFIX=E57-install \\\n    -DCMAKE_PREFIX_PATH=/path/to/xerces-c \\\n    libE57Format\n```\n\nOnce the library is built, you can run the tests like this:\n\n```\n$ cd E57-build\n$ ./test/testE57\n[==========] Running 36 tests from 8 test suites.\n[----------] Global test environment set-up.\n[----------] 1 test from TestData\n[ RUN      ] TestData.RepoExists\n...\n```\n\nSee [test/README](test/README.md) for details about testing and the test data.\n\n## 🍴 Fork (2018)\n\nThis 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/).\n\nThe original code had not been touched in several years and I wanted to make changes to compile it on macOS. Forking it gave me more freedom to update the code and make changes as required. Everything was stripped out except the main implementation for reading \u0026 writing E57 files.\n\n- I changed the name of the project so that it is not confused with the **E57RefImpl** project.\n- I changed the main include file's name from `E57Foundation.h` to `E57Format.h` to make sure there is no inclusion confusion.\n- Versions of **libE57Format** started at 2.0.\n- I fixed it to compile and run on macOS.\n- It no longer depends on [Boost](https://www.boost.org/).\n- 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).)\n\nMany, many other changes were made prior to the first release of this fork, and it has diverged significantly since. See the [CHANGELOG](CHANGELOG.md) and git history for details.\n\n### E57Simple API\n\n[Jiri Hörner](https://github.com/ptc-jhoerner) added the E57Simple API from the old reference implementation and updated it.\n\nThis _Simple API_ has evolved since this original port to fix some problems and to make it more foolproof \u0026 easier to use. Please see the [CHANGELOG](CHANGELOG.md) for version 3.\n\n## Projects Using libE57Format\n\n- [AliceVision](https://github.com/alicevision/AliceVision)\n- [CloudCompare](https://github.com/CloudCompare/CloudCompare)\n- [MeshLab](https://github.com/cnr-isti-vclab/meshlab)\n- [pye57](https://github.com/davidcaron/pye57)\n\nThese projects use hard forks of libE57Format:\n\n- [FreeCAD](https://github.com/FreeCAD/FreeCAD)\n- [PDAL](https://github.com/PDAL/PDAL)\n\nThere are also many commercial products using libE57Format. If any of them would like to sponsor the project and be listed here, please \u003ca href=\"mailto:asmaloney@gmail.com?subject=libE57Format Sponsorship\"\u003econtact Andy\u003c/a\u003e.\n\n## How To Contribute\n\nThese are some of the things you can do to contribute to the project:\n\n### 💰 Financial\n\nGiven that I'm an independent developer without funding, financial support is 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, or we can arrange \u003ca href=\"mailto:asmaloney@gmail.com?subject=libE57Format B2B Sponsorship\"\u003eB2B invoicing\u003c/a\u003e of some kind. Thank you!\n\n### ✍ Write About The Project\n\nIf you find the project useful, spread the word! Articles, mastodon posts, tweets, blog posts, instagram photos - whatever you're into. Please include a referral back to the repository page: https://github.com/asmaloney/libE57Format\n\n### ⭐️ Add a Star\n\nIf you found this project useful, please consider starring it! It helps me gauge how useful this project is.\n\n### ☝ Raise Issues\n\nIf 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.\n\n### 🐞 Bug Fixes \u0026 🧪 New Things\n\nI 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.\n\nNote 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.\n\n#### Formatting\n\nThis 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:\n\n```sh\ncmake --build . --target e57-clang-format\n```\n\n### 📖 Documentation\n\nThe [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.\n\n## License\n\nThis project is licensed under the [**BSL-1.0** license](https://opensource.org/licenses/BSL-1.0) - see the [LICENSE](LICENSE.md) file for details.\n\nIndividual source files may contain the following tag instead of the full license text:\n\n    SPDX-License-Identifier: BSL-1.0\n\nUsing 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.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasmaloney%2Flibe57format","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fasmaloney%2Flibe57format","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasmaloney%2Flibe57format/lists"}