Skip to content
This repository was archived by the owner on Jul 10, 2025. It is now read-only.

Releases: ABRG-Models/morphologica

The 'morphologica is now mathplot' release

25 Jun 15:13
Compare
Choose a tag to compare

This is the final release of morphologica! But don't be sad, new development is now occurring over at mathplot.

This release just contains a couple of bug fixes, especially improvements in mat44 (thanks to @blenk13).

What's Changed

Full Changelog: v4.0...v4.1

The C++20 Windows Compatible Release

02 Apr 15:55
2e25e21
Compare
Choose a tag to compare

Summary

This release makes several major changes warranting the increment of the major version number to 4. morphologica now requires your compiler to support C++20, allowing our use several nice features such as the requires keyword. It switches GL header inclusion over to GLAD (https://github.com/Dav1dde/glad) which makes it possible to support Microsoft Windows as a build platform. This was an involved process and prompted the re-design of the morph::Visual/morph::VisualModel classes to support both multi-context safe GL and single context GL. It adds constexpr-capable maths functions while we await C++26 support/adoption. It includes some maths improvements in morph:vvec, morph::histo, morph::scale and morph::range and some vis improvements in morph::GraphVisual, notably a 'line crossing' feature:

Screenshot a line graph showing the new line crossing feature

The API has some breaking changes: the struct morph::unicode becomes a namespace (which may require client code changes if you are using morph::unicode). Lastly, if you are querying Visual::readyToFinish you will now need to query with a function call Visual::readyToFinish(). One or two other bool parameters have also changed (e.g. Visual::showCoordArrows).

Special thanks to @rremilian who made massive improvements to the CI actions, these have really improved the development process.

What's Changed

New Contributors

Full Changelog: v3.4.4...v4.0

The Last C++17 Release

20 Feb 17:29
Compare
Choose a tag to compare

Summary

This is the very last release that will be C++17 compatible. Future releases (and the main development branch) will require your compiler to support C++20.

There are a few small differences since Beautifully Packaged 4 (which is now the first version of morphologica in microsoft/vcpkg!). Mostly this release is just for 'if you just have to have morphologica with a pre-C++20 compiler'.

What's Changed

Full Changelog: v3.4.3...v3.4.4

Beautifully Packaged 4

16 Feb 20:13
Compare
Choose a tag to compare

Summary

Adds a trait_test improvement that is a) simpler (shorter) b) better (identifies std::array<int, 0>) and c) won't trip Visual Studio up

Full Changelog: v3.4.2...v3.4.3

Beautifully Packaged 3

16 Feb 19:39
Compare
Choose a tag to compare

Summary

More packaging tweaks...

Full Changelog: v3.4.1...v3.4.2

Beautifully Packaged 2

16 Feb 14:40
f2b3841
Compare
Choose a tag to compare

Summary

Further work towards a well-packaged morphologica. These changes are all about housekeeping, dotting 'i's and crossing 't's.

What's Changed

Full Changelog: v3.4...v3.4.1

The Beautifully Packaged Release

14 Feb 13:12
Compare
Choose a tag to compare

Summary

This release is part of an effort to clean up the use of third-party code in morphologica so that it is more suitable to be incorporated in packaging systems. The immediate motivation is to have it included in vcpkg see the vcpkg issue here and the associated morphologica issue here.

As part of this release (and the previous release) I have:

  • Transferred nlohmann-json out of morphologica so that a proper external package is used
  • Defaulted to using rapidxml from a third party package (though a bundled version is provided where a package is not available)
  • Removed any use of OpenCV from morphologica (apart from some ifdeffed code in HdfData.h)
  • Removed bundled copies of GL headers from morphologica (they were only used with Linux builds, and I have changed to using system-provided versions of the GL headers)
  • Tidied up a couple of headers that don't need to be installed.

Removing OpenCV necessitated rewriting a test of Bezier curve drawing classes to use GraphVisual. Here is a screenshot demonstrating a rather nice Bezier curve-joining algorithm that I developed a while ago. The purple curve is the auto-join of the red and blue curves. Bezier control points are shown along with the computed curves.

Beziers

What's Changed

Full Changelog: v3.3.1...v3.4

The VoronoiVisual Release again

13 Feb 11:55
Compare
Choose a tag to compare

Summary

vv_release2

This is a very minor point release following v3.3. It simply turns off the compilation of a couple of buildtools by default (to help vcpkg efforts).

The rest of the release notes are (almost) a reproduction of those in The VoronoiVisual Release, v3.3.

This release adds a VisualModel class called VoronoiVisual for making 2.5D Voronoi surface plots of sets of points chosen at arbitrary locations. There are also two other new VisualModels: RingVisual for drawing a coloured circular ring and LengthscaleVisual to draw length-scale bars. It adds speed optimizations for GridVisual and some general improvements (and documentation) of GraphVisual. There are several improvements in core maths classes including morph::vvec, morph::range and the trait-testing code as well as a class for managing Boolean flags called morph::flags.

I finally figured out how to save screenshots (Ctrl-s in any morphologica example) with the background filled in!

What's Changed

Improvements to morph::vvec

Improvements to morph::Config

Optimizations for morph::GridVisual

Improvements to morph::GraphVisual, including better histograms

An awesome new morph::VoronoiVisual class for plotting surfaces over arbitrary points

A nice new morph::flags class

Build improvements

Improvements to morph::range

Trait test improvements

Improvements in morph::Visual

  • Adds a VisualModel-is-valid pointer test function by @sebjameswml in #331
  • Fix Visual::saveImage so that it saves a non-transparent background colour by default.

Full Changelog: v3.2...v3.3.1

The VoronoiVisual Release

12 Feb 21:58
7663a64
Compare
Choose a tag to compare

Summary

vv_release2

This release adds a VisualModel class called VoronoiVisual for making 2.5D Voronoi surface plots of sets of points chosen at arbitrary locations. There are also two other new VisualModels: RingVisual for drawing a coloured circular ring and LengthscaleVisual to draw length-scale bars. It adds speed optimizations for GridVisual and some general improvements (and documentation) of GraphVisual. There are several improvements in core maths classes including morph::vvec, morph::range and the trait-testing code as well as a class for managing Boolean flags called morph::flags.

I finally figured out how to save screenshots (Ctrl-s in any morphologica example) with the background filled in!

What's Changed

Improvements to morph::vvec

Improvements to morph::Config

Optimizations for morph::GridVisual

Improvements to morph::GraphVisual, including better histograms

An awesome new morph::VoronoiVisual class for plotting surfaces over arbitrary points

A nice new morph::flags class

Build improvements

Improvements to morph::range

Trait test improvements

Improvements in morph::Visual

  • Adds a VisualModel-is-valid pointer test function by @sebjameswml in #331
  • Fix Visual::saveImage so that it saves a non-transparent background colour by default.

Full Changelog: v3.2...v3.3

The Colourful Release

03 Dec 09:56
Compare
Choose a tag to compare

Summary

This release brings you:

  • Over 100 new, beautiful, perceptually uniform colourmaps from Crameri and CET (also incorporating code from William Lenthe). The screenshots come from the example programs colourmaps_crameri, hsvwheel, colourmaps_cet and colourmap_browser.

A montage of new morphologica colourmaps

  • The ability to read and visualize spherical HEALPix grids (images from healpixviewer)

Spherical HEALPix data viewed with morph::HealpixVisual

  • Some refactoring of core maths classes (including Scale->scale; Quaternion->quaternion; TransformMatrix->mat44)
  • Improvements in OpenGL context handling along with the ability to coordinate access to the context via a mutex (thanks @connagh-opteran)
  • It also introduces some changes and new features in morph::Grid and GridVisual (thanks @blenk13 and @fabien-colonnier). The screenshot is from the example program grid_border.

A screenshot of the grid_border example program show a GridVisual with borders around the pixels

  • The option to use a signed index in vvec (where v.at_signed(-1) accesses the last element in the vvec)
  • Graph axis labelling improvements (especially re-sizing the font for axis tick labels)
  • Complex number handling in morph::range and morph::scale

What's Changed

New Contributors

Full Changelog: v3.1.1...v3.2