#3d #mesh-generation #gamedev #library #c #utilities #libraries

Philip Rideout d54675bddc sprune: WIP on incremental support il y a 10 ans
test d54675bddc sprune: WIP on incremental support il y a 10 ans
tools 3ed51ae372 bubbles: simple hierarchical packing is now supported. il y a 10 ans
.gitignore 3ef6d18fe8 Fleshing out par_shapes. il y a 10 ans
.travis.yml 4d3ec05e73 Skeleton for sweep-and-prune library. il y a 10 ans
README.md 4258160579 Add back the subdomain. il y a 10 ans
par_bluenoise.h 4258160579 Add back the subdomain. il y a 10 ans
par_bubbles.h 4258160579 Add back the subdomain. il y a 10 ans
par_easycurl.h fef1f41f8c Fix header guards. il y a 10 ans
par_filecache.h 4d3ec05e73 Skeleton for sweep-and-prune library. il y a 10 ans
par_msquares.h 4258160579 Add back the subdomain. il y a 10 ans
par_shapes.h 4258160579 Add back the subdomain. il y a 10 ans
par_sprune.h d54675bddc sprune: WIP on incremental support il y a 10 ans

README.md

Build Status

par

Single-file C libraries under the MIT license. Documentation can be found at the top of each header file, but some libraries have an accompanying blog post.

library description link
par_msquares.h efficient marching squares implementation blog post
par_shapes.h generate parametric surfaces and other simple shapes blog post
par_bubbles.h pack circles into hierarchical diagrams blog post
par_bluenoise.h generate progressive 2D point sequences blog post
par_sprune.h efficient broad-phase collision detection in 2D
par_easycurl.h simple HTTP requests using libcurl
par_filecache.h LRU caching on your device's filesystem

tests

To run tests, you need CMake and libcurl. On OS X, these can be installed with homebrew:

$ brew install cmake pkg-config curl

Here's how you can tell CMake to use the CMakeLists in the test folder, placing all the messy stuff in a new folder called build.

$ cmake test -Bbuild   # Create makefiles
$ cmake --build build  # Invoke the build

The tests are executed by simply running the programs:

$ cd build
$ ./test_msquares
$ ./test_bluenoise
$ ./test_bubbles
$ ./test_shapes

code formatting

This library's code style is strictly enforced to be vertically dense (no consecutive newlines) and horizontally narrow (80 columns or less).

The tools/format.py script invokes a two-step code formatting process:

  1. Runs uncrustify with our custom configuration. This auto-formats all code in the root folder, up to a point. For example, it does not enforce the 80-character line constraint because line breaking is best done by a human.
  2. Checks for violations that are not otherwise enforced with uncrustify.

The aforementioned Python script is also invoked from Travis, but using the --check option, which checks for conformance without editing the code.

Beyond what our uncrustify configuration enforces, the Python script does the following:

  • Checks that no lines are more than 80 chars.
  • Checks for extra newlines before an end brace.