Releases: ABRG-Models/morphologica
The 'morphologica is now mathplot' release
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
- Revert PR #478 by @rremilian in #480
- VoronoiVisual bug fixing by @sebjameswml in #482
- Fix for transform matrix scale operation by @sebjameswml in #483
- Methods added for vector rotation without having to build a rotation matrix by @blenk13 in #484
- Implements a scatter graph of rods by @sebjameswml in #485
- Additional const contracts across CartGrid by @sebjameswml in #488
- Pretranslate and prerotate functions added to mat44 class by @blenk13 in #487
- Use VisualGlfw in compute_manager by @sebjameswml in #489
Full Changelog: v4.0...v4.1
The C++20 Windows Compatible Release
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:
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
- Adds constexpr_math.h by @sebjameswml in #376
- is Wno-missing-braces stale for clang? by @sebjameswml in #383
- Include rapidxml for schnakenberg recurrentnet by @rremilian in #386
- Improvments to Github workflows by @rremilian in #384
- Auto-cancel redundant pipelines by @rremilian in #399
- Convert to using GLAD for OpenGL header loading by @sebjameswml in #387
- Add Windows workflow by @rremilian in #388
- Fix Windows workflow reference by @rremilian in #404
- Replace OWNED_MODE with an inheritance scheme for morph::Visual by @sebjameswml in #401
- [fix] examples/bootstrap.exe fails by @miyanyan in #407
- Workaround to help this run on Windows by @sebjameswml in #409
- Trying to add caching for vcpkg by @rremilian in #414
- Rearrange inheritance to avoid most #ifdef GLAD_OPTION_GL_MX by @sebjameswml in #405
- Moves boundaries by @sebjameswml in #416
- Rids us of MorphDbg and DBG calls by @sebjameswml in #417
- Adds compiler switches for Visual Studio by @sebjameswml in #419
- Add the other tests in the Windows Workflow by @rremilian in #403
- CoordAxes fixes (crashing issue plus text label placement) by @sebjameswml in #422
- flags c++17 to c++20 by @sebjameswml in #423
- Moves the valgrind suppression file into buildtools by @sebjameswml in #425
- Ordered deconstruction by @sebjameswml in #427
- Force release build on Windows by @sebjameswml in #428
- Adds a program to profile erase-from-std::list by @sebjameswml in #430
- Handles linspace applied to a single element vvec by @sebjameswml in #431
- Enable T{value} * vvec<S> by @sebjameswml in #432
- Adds mat44::scale (plus tweaks) by @sebjameswml in #434
- Quaternion style, trait testing and noexcept by @sebjameswml in #437
- Better handling of unit thresholds by @sebjameswml in #438
- Exceptions removed from range and vec. Reduced in vvec. by @sebjameswml in #436
- Dev/noexcept partial rollback by @sebjameswml in #439
- Marks those functions which can be noexcept with the keyword. by @sebjameswml in #440
- Avoid Wfree-nonheap-object by @sebjameswml in #441
- Dev/histo prop below by @sebjameswml in #442
- Adds Visual::pauseOpen and a demo in the rosenbrock example by @sebjameswml in #443
- Adds a firstlast method to vec and vvec by @sebjameswml in #447
- Dev/graph crossinglines by @sebjameswml in #448
- Adds new exclusion dirs by @sebjameswml in #452
- 451 underscores refactor by @sebjameswml in #453
- 449 refactor the nomx classes by @sebjameswml in #455
- Remove virtual where its not required by @sebjameswml in #456
- Make CI do Qt and WX compilations by @sebjameswml in #458
- Dev/gl defines to remove by @sebjameswml in #459
- Tick numbering bug fixes by @sebjameswml in #461
- Scale a range! by @sebjameswml in #464
- 308 tick numbering again by @sebjameswml in #462
- An idea for a function to set an identity scaling for the morph::scale by @sebjameswml in #446
- Adds scale::null_scaling() by @sebjameswml in #468
- Address nans in vvecs with compile time optional code by @sebjameswml in #466
- stdios flags for HdfData by @sebjameswml in #470
- Adds an append method by @sebjameswml in #474
- Changes unicode from struct to namespace by @sebjameswml in #475
- Shifts the wrap to a template arg, adds a puremaths template arg by @sebjameswml in #471
- morph::flags for options/state in morphvisual by @sebjameswml in #476
New Contributors
- @rremilian made their first contribution in #386
- @miyanyan made their first contribution in #407
Full Changelog: v3.4.4...v4.0
The Last C++17 Release
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
- Optimizes the triangles form of HexGridVisual by @sebjameswml in #379
Full Changelog: v3.4.3...v3.4.4
Beautifully Packaged 4
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
Beautifully Packaged 2
Summary
Further work towards a well-packaged morphologica. These changes are all about housekeeping, dotting 'i's and crossing 't's.
What's Changed
- 356 tools modernize by @sebjameswml in #360
- Think the incbin.h thing is as simple as this. WIN32 only. by @sebjameswml in #361
- Corrects type of colour table constants by @sebjameswml in #365
- Rid me of fopen by @sebjameswml in #366
Full Changelog: v3.4...v3.4.1
The Beautifully Packaged Release
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.
What's Changed
- Remove OpenCV use from morphologica by @sebjameswml in #347
- Use system-installed rapidxml by default by @sebjameswml in #351
- Removes bundled GL/EGL headers by @sebjameswml in #352
- Sorts 3rd party Windows font support by @sebjameswml in #353
Full Changelog: v3.3.1...v3.4
The VoronoiVisual Release again
Summary
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
- Enables set_from(vec{1,2,3}) called on a vvec of vecs by @sebjameswml in #298
- Adds an extent method by @sebjameswml in #322
- Make possible vvec<vec<>> times vec<> by @sebjameswml in #325
- Consolidate vvec::set_from_onelonger templates by @sebjameswml in #329
- vvec shortest nonzero method by @sebjameswml in #332
- Dev/324 debug reduction by @sebjameswml in #326
Improvements to morph::Config
- Adds a getvec method to morph::Config by @sebjameswml in #299
Optimizations for morph::GridVisual
- Adds a fast reinitColour() method to GridVisual by @sebjameswml in #297
- Fix a couple of morph::Grid functions that should be const by @sebjameswml in #300
- GridVisual selected pixels border enhancements by @sebjameswml in #306
- Optimises initializeVerticesTris in GridVisual by @sebjameswml in #315
Improvements to morph::GraphVisual
, including better histograms
- Enable graphs of data with only a right axis by @sebjameswml in #302
- 318 graph visual setsize by @sebjameswml in #319
- 334 histo manual range by @sebjameswml in #335
An awesome new morph::VoronoiVisual
class for plotting surfaces over arbitrary points
- Surface plotting with arbitrarily distributed samples by @sebjameswml in #303
- 311 voronoi rectangular by @sebjameswml in #312
A nice new morph::flags
class
- Dev/309 flags by @sebjameswml in #310
Build improvements
- Rearranging to ensure compilation succeeds with or without libarmadillo by @sebjameswml in #317
- Lose -march=native which can cause problems by @sebjameswml in #301
- Updates the list of header files by @sebjameswml in #340
- Makes examples and tests building optional by @sebjameswml in #341
- Switches from bundled to packaged nlohmann-json by @sebjameswml in #343
- Fix potential build error by @sebjameswml in #342
- Some updates in the READMEs
Improvements to morph::range
- Adds a range for non scalar elements by @sebjameswml in #321
- Adds a str() method to morph::range by @sebjameswml in #305
Trait test improvements
- Add morph::is_copyable_fixedsize by @sebjameswml in #327
- Apply is_copyable_fixedsize in vvec by @sebjameswml in #328
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
Summary
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
- Enables set_from(vec{1,2,3}) called on a vvec of vecs by @sebjameswml in #298
- Adds an extent method by @sebjameswml in #322
- Make possible vvec<vec<>> times vec<> by @sebjameswml in #325
- Consolidate vvec::set_from_onelonger templates by @sebjameswml in #329
- vvec shortest nonzero method by @sebjameswml in #332
- Dev/324 debug reduction by @sebjameswml in #326
Improvements to morph::Config
- Adds a getvec method to morph::Config by @sebjameswml in #299
Optimizations for morph::GridVisual
- Adds a fast reinitColour() method to GridVisual by @sebjameswml in #297
- Fix a couple of morph::Grid functions that should be const by @sebjameswml in #300
- Optimises initializeVerticesTris in GridVisual by @sebjameswml in #315
Improvements to morph::GraphVisual
, including better histograms
- Enable graphs of data with only a right axis by @sebjameswml in #302
- GridVisual selected pixels border enhancements by @sebjameswml in #306
- 318 graph visual setsize by @sebjameswml in #319
- 334 histo manual range by @sebjameswml in #335
An awesome new morph::VoronoiVisual
class for plotting surfaces over arbitrary points
- Surface plotting with arbitrarily distributed samples by @sebjameswml in #303
- 311 voronoi rectangular by @sebjameswml in #312
A nice new morph::flags
class
- Dev/309 flags by @sebjameswml in #310
Build improvements
- Rearranging to ensure compilation succeeds with or without libarmadillo by @sebjameswml in #317
- Lose -march=native which can cause problems by @sebjameswml in #301
- Updates the list of header files by @sebjameswml in #340
- Makes examples and tests building optional by @sebjameswml in #341
- Switches from bundled to packaged nlohmann-json by @sebjameswml in #343
- Fix potential build error by @sebjameswml in #342
Improvements to morph::range
- Adds a range for non scalar elements by @sebjameswml in #321
- Adds a str() method to morph::range by @sebjameswml in #305
Trait test improvements
- Add morph::is_copyable_fixedsize by @sebjameswml in #327
- Apply is_copyable_fixedsize in vvec by @sebjameswml in #328
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
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.
- The ability to read and visualize spherical HEALPix grids (images from healpixviewer)
- 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
andGridVisual
(thanks @blenk13 and @fabien-colonnier). The screenshot is from the example program grid_border.
- The option to use a signed index in
vvec
(wherev.at_signed(-1)
accesses the last element in thevvec
) - Graph axis labelling improvements (especially re-sizing the font for axis tick labels)
- Complex number handling in
morph::range
andmorph::scale
What's Changed
- Adds a Healpix VisualModel by @sebjameswml in #234
- add the auto_rescale_y on the GraphVisual model and make the depth of grid on GridVisual not relative to pixel width by @fabien-colonnier in #235
- Change name of Scale::compute_autoscale by @sebjameswml in #238
- Tweak behavour of monochrome/val maps by @sebjameswml in #241
- Stop branching code for ICC by @sebjameswml in #242
- Adds Matthew Petrov's Planck colour map by @sebjameswml in #245
- Merge pull request #245 from ABRG-Models/221-CMB_colourmap by @sebjameswml in #247
- 221 cmb colourmap by @sebjameswml in #249
- Minor improvements by @sebjameswml in #250
- Adds a function to look up an index from a passed-in coordinate. by @sebjameswml in #251
- 240 vvec of vecs in grid by @sebjameswml in #252
- Healpix astrometry more c++ by @sebjameswml in #253
- Adds a nice test of all the 1D colourmaps for perceptual uniformity by @sebjameswml in #254
- 257 visual destruction opengl error by @sebjameswml in #258
- Adds ushort support for read in a container of data by @sebjameswml in #260
- Correct rounding error in number of pixel computation and grid drawing by @fabien-colonnier in #259
- Adds colourmaps from CET, Fabio Crameri and William Lenthe by @sebjameswml in #262
- setContext() call is not correct in OWNED_MODE by @sebjameswml in #264
- Output a colour map string name which matches the C++ code name for ColourMapType by @sebjameswml in #266
- Adds signed indexing to vvec by @sebjameswml in #267
- A possible solution to keeping text labels all legible. by @sebjameswml in #256
- GraphVisual auto-rescaling review by @sebjameswml in #269
- Adds a Colourmap browser by @sebjameswml in #270
- Demonstrate that += and -= are ok in constexpr fn by @sebjameswml in #271
- Adds constexpr tests of the range class by @sebjameswml in #272
- Adds a 'suggest_dims' static method to the Grid class by @sebjameswml in #274
- find_nearest_neighbours() and indicies_in_radius() functions added to Grid by @blenk13 in #277
- shift_index functions added into Grid class by @blenk13 in #278
- Need to know what the HDF5_INCLUDE_DIR is by @sebjameswml in #281
- Adds axes indicator to healpixvis by @sebjameswml in #284
- Adds complex number handling to morph::range and morph::Scale by @sebjameswml in #273
- Dev/refactor matrix nn by @sebjameswml in #287
- Quaternion refactor by @sebjameswml in #288
- Refactor morph::Scale -> morph::scale by @sebjameswml in #289
- Updates scale docs following refactor by @sebjameswml in #290
- morph::Tools refactor by @sebjameswml in #291
- Slightly nicer string constants in morph::tools by @sebjameswml in #292
- Removes Grid::n attribute, replacing with Grid::n() and removing Grid… by @sebjameswml in #293
- Make it possible to releaseContext after morph::Visual construction by @sebjameswml in #294
- Adds a method to rotate the scene about an axis by @sebjameswml in #295
- Add a lockable context for improved memory safety. by @connagh-opteran in #296
New Contributors
- @connagh-opteran made their first contribution in #296
Full Changelog: v3.1.1...v3.2