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

Philip Rideout 4360fe903d Add prototypes for cuboid. 6 lat temu
test 5da387e843 Introduce par_camera_control. 6 lat temu
tools 59a9dadc9c Repair travis. 6 lat temu
.gitignore 57c8093f36 Streamlines fixes. 6 lat temu
.travis.yml c8328f6540 Fix undefined refs. 6 lat temu
README.md 4360fe903d Add prototypes for cuboid. 6 lat temu
par_bluenoise.h ca16a754a1 Include full license text in headers. 6 lat temu
par_bubbles.h ca16a754a1 Include full license text in headers. 6 lat temu
par_camera_control.h 39e330ebaa Add orbit_strafe_speed. 6 lat temu
par_easings.h ca16a754a1 Include full license text in headers. 6 lat temu
par_easycurl.h 30f2c72cbf Upgrade uncrustify. 6 lat temu
par_filecache.h 30f2c72cbf Upgrade uncrustify. 6 lat temu
par_msquares.h 15864500ef Fix formatting. 6 lat temu
par_shaders.h 225924794d Make par_shaders amenable to C++. 6 lat temu
par_shapes.h 4360fe903d Add prototypes for cuboid. 6 lat temu
par_sprune.h 30f2c72cbf Upgrade uncrustify. 6 lat temu
par_streamlines.h 30f2c72cbf Upgrade uncrustify. 6 lat temu

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_bluenoise.h generate progressive 2D point sequences blog post
par_bubbles.h pack circles into hierarchical diagrams blog post
par_camera_control.h orbit controller, or pan-and-zoom like Google Maps demo project
par_easings.h Robert Penner's easing functions
par_easycurl.h simple HTTP requests using libcurl
par_filecache.h LRU caching on your device's filesystem
par_msquares.h unmaintained marching squares library blog post (do not use)
par_shaders.h string extraction and concatenation
par_shapes.h generate parametric surfaces and other simple shapes blog post
par_sprune.h efficient broad-phase collision detection in 2D web demo
par_streamlines.h triangulate wide lines and curves blog post

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:

$ build/test_msquares
$ build/test_bluenoise
$ build/test_bubbles
$ build/test_shapes

code formatting

This library's code style is strictly enforced to be vertically dense (no consecutive newlines) and 100 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.
  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 100 chars.
  • Checks for extra newlines before an end brace.