January 2014 updates to Magnum

Since the pre­vi­ous Oc­to­ber snap­shot Mag­num gained Vis­ual Stu­dio port, font con­ver­sion util­i­ty, im­proved text ren­der­ing along with ex­am­ple ap­pli­ca­tion, sup­port for OpenGL de­bug out­put, doc­u­men­ta­tion up­dates, bet­ter test cov­er­age and many more us­abil­i­ty im­prove­ments and fix­es.

The ver­sion 2014.01 is avail­able un­der the v2014.01 tag in Cor­rade, Mag­num, Mag­num Plug­ins and Mag­num In­te­gra­tion GitHub repos­i­to­ries. This ar­ti­cle will de­scribe the most im­por­tant changes, for de­tailed list fol­low the changel­og links at the end of this an­nounce­ment.

For com­pat­i­bil­i­ty branch there is the snapshot-2014-01-compatibility tag in Cor­rade, Mag­num and Mag­num Plug­ins repos­i­to­ries.

Google Groups dis­cus­sion

You can now ask for help, share your work or par­ticip­i­ate in de­vel­op­ment at the new Google Groups fo­rum. The group is open to ev­ery­one, you just need Google ac­count to post. In my opin­ion this is bet­ter than re­quir­ing ev­ery­one to cre­ate new ac­count on some self-host­ed fo­rum.

New text ren­der­ing ex­am­ple

I added text ren­der­ing ex­am­ple to show­case new fea­tures such as text align­ment and mul­ti-line text, in ad­di­tion to al­ready ex­ist­ing dis­tance-field ren­der­ing ca­pa­bil­i­ties. See show­case page for live ap­pli­ca­tion run­ning on both Em­scripten and Na­tive Client. I al­so added live Tex­tured Tri­an­gle ex­am­ple.

Textured triangle example screenshot
Tex­tured Tri­an­gle Ex­am­ple wasm we­bgl1
Slight­ly ex­tend­ed ver­sion of the tri­an­gle ex­am­ple; us­es TGA im­porter plug­in to load a stone im­age and dis­plays a tri­an­gle with col­ored tex­ture on it.
Text example screenshot
Text Ex­am­ple wasm we­bgl1
Show­case of Mag­num text ren­der­ing us­ing signed dis­tance fields. Full UTF-8 sup­port.

Us­ing ab­so­lute in­cludes by de­fault

All projects were switched to use ab­so­lute in­cludes by de­fault, i.e. head­ers are in­clud­ed this way:

#include <Magnum/Math/Vector3.h>

rather than this way:

#include <Math/Vector3.h>

This solves many prob­lems with file­name col­li­sions (name­ly with Vis­ual Stu­dio com­pil­er, Doxy­gen and pos­si­bly else­where), see mosra/mag­num#36 for more in­for­ma­tion. As this is a very dras­tic change, you may need to recre­ate your build di­rec­to­ries and up­date at least FindCorrade.cmake and FindMagnum.cmake CMake mod­ules with new ones from modules/ sub­di­rec­to­ry in Cor­rade and Mag­num repos­i­to­ries (and pos­si­bly al­so oth­er ones).

If you are build­ing with dep­re­cat­ed fea­tures en­abled (BUILD_DEPRECATED CMake pa­ram­e­ter in both Cor­rade and Mag­num), you can still use the old non-ab­so­lute in­cludes, but you are en­cour­aged to switch to ab­so­lute ones.

Vis­ual Stu­dio 2013 sup­port

This re­lease is the first one with ex­per­i­men­tal Vis­ual Stu­dio 2013 sup­port. Be­cause the com­pil­er still lacks some re­quired fea­tures (constexpr and noexcept key­words) and has some se­ri­ous bugs in C++11 im­ple­men­ta­tion, the sup­port is pro­vid­ed on­ly through compatibility branch. The port in­volves some ug­ly hacks and work­arounds which can’t be put in master, hope­ful­ly the next MSVC re­lease will make my life eas­i­er. Snap­shot of compatibility branch with MSVC 2013 sup­port is avail­able un­der snapshot-2014-01-compatibility tag in Cor­rade and Mag­num GitHub repos­i­to­ries. The com­pat­i­bil­i­ty branch doesn’t con­tain any­thing new ex­cept work­arounds for said com­pil­ers.

Com­plete changel­og

You can find a de­tailed list of changes in ver­sion 2014.01 in the doc­u­men­ta­tion: