New in version 4.0.0


  • Added

  • Fixed

    • Matrix form.
    • MainMenu and PopupMenu background layout when shadow exists.
  • Renamed

    • Epsilon constant was renamed to Tolerance.
  • Improved

    • Mathematical functions, procedures, and objects was gathered togather and moved into Mathematical module.
    • Slightly improved speed of OpenGL shaders by removing color premultiplication.
  • Removed

    • Data types Integer and Float has been removed.

Migration from previous version

Following functions and objects should be used from new location(and some of them with slightly different names):

  • graphics::TMatrix is now math::TTensor.
    If you used this template directly, you may construct matrix with tensor by specifying it rows and columns as second and third template parameter(the first one is for data type). For example, math::TTensor<float, 4, 4> m; is a 4x4 matrix.
  • graphics::TVector is now math::TTensor.
    If you used this template directly, you may construct vector with tensor by specifying it size as second template parameter(the first one is for data type). For example, math::TTensor<float, 4> v{ 0, 0, 0, 1 }; is an initialized 4D vector.
  • graphics::TPlane is now math::TPlane.
  • graphics::TPoint is now math::TPoint.
  • graphics::TRect is now math::TRect.
  • graphics::Sign is now math::Sign.
  • graphics::Swap is now math::Swap.
  • graphics::Min is now math::Min.
  • graphics::Max is now math::Max.
  • graphics::Round is now math::Round.
  • isEqual is now IsEqaul.
  • isUnequal is now IsNotEqual.
  • isLess is now IsLess.
  • isLessOrEqual is now IsLessOrEqual.
  • isGreater is now IsGreater.
  • isGreaterOrEqual is now IsGreaterOrEqual.
Also many of the former graphics::TVector and graphics::TMatrix template methods are now standalone functions dealing with math::TTensor instead. Here they are: If you are using such objects(typenames) as Vector, Matrix instead of direct access to templates, you only need to adjust vector/matrix operators from * to ^ and use standalone functions instead on methods as mentioned above.
Please pay attention! From now one you have to use ^ operator for multiplying matrices and vectors if you mean vector multiplication for vectors and 2D matrix muliplications for matrices and vector transformation by matrix. The old * operator exists as well but it is doing element wise multiplications(it means if you multiply to matrices, new matrix elements will just have composition of corresponding elements from those two matrices).

Instead of Integer and Float types use int and double everywhere. You may use Visual Studio "Replace in Files" feature for fast replace type names in your projects. You also may define Integer as int and Float as double as a quick temporal solution.

You may tell controls and forms to adopt to monitor DPI by using theirs setDPI() methods.