Browse Source

python: need also unsigned Range types for the new Text APIs.

next
Vladimír Vondruš 1 year ago
parent
commit
78af75ad5a
  1. 2
      doc/python/pages/changelog.rst
  2. 6
      src/python/magnum/__init__.py
  3. 16
      src/python/magnum/math.range.cpp

2
doc/python/pages/changelog.rst

@ -69,6 +69,8 @@ Changelog
- Exposed :ref:`Color3.from_xyz()`, :ref:`Color3.from_linear_rgb_int()`, - Exposed :ref:`Color3.from_xyz()`, :ref:`Color3.from_linear_rgb_int()`,
:ref:`Color3.to_xyz()`, :ref:`Color3.to_linear_rgb_int()` and equivalent :ref:`Color3.to_xyz()`, :ref:`Color3.to_linear_rgb_int()` and equivalent
APIs on :ref:`Color4` APIs on :ref:`Color4`
- Exposed unsigned :ref:`Range1Dui`, :ref:`Range2Dui` and :ref:`Range3Dui`
types in addition to the signed variants
- Exposed new :ref:`Quaternion.rotation()`, :ref:`Quaternion.reflection()`, - Exposed new :ref:`Quaternion.rotation()`, :ref:`Quaternion.reflection()`,
:ref:`Quaternion.reflect_vector()`, :ref:`Quaternion.xyzw` and :ref:`Quaternion.reflect_vector()`, :ref:`Quaternion.xyzw` and
:ref:`Quaternion.wxyz` APIs :ref:`Quaternion.wxyz` APIs

6
src/python/magnum/__init__.py

@ -76,9 +76,9 @@ __all__ = [
'Matrix3', 'Matrix4', 'Matrix3d', 'Matrix4d', 'Matrix3', 'Matrix4', 'Matrix3d', 'Matrix4d',
'Quaternion', 'Quaterniond', 'Quaternion', 'Quaterniond',
'Range1D', 'Range1Di', 'Range1Dd', 'Range1D', 'Range1Di', 'Range1Dui', 'Range1Dd',
'Range2D', 'Range2Di', 'Range2Dd', 'Range2D', 'Range2Di', 'Range2Dui', 'Range2Dd',
'Range3D', 'Range3Di', 'Range3Dd', 'Range3D', 'Range3Di', 'Range3Dui', 'Range3Dd',
'MeshPrimitive', 'MeshIndexType', 'MeshPrimitive', 'MeshIndexType',

16
src/python/magnum/math.range.cpp

@ -335,12 +335,14 @@ template<class U, template<class> class Type, class T, class ...Args> void conve
template<template<UnsignedInt, class> class Type, UnsignedInt dimensions, class T, class ...Args> void convertible(py::class_<Type<dimensions, T>, Args...>& c) { template<template<UnsignedInt, class> class Type, UnsignedInt dimensions, class T, class ...Args> void convertible(py::class_<Type<dimensions, T>, Args...>& c) {
convertibleImplementation<Int>(c, std::is_same<T, Int>{}); convertibleImplementation<Int>(c, std::is_same<T, Int>{});
convertibleImplementation<UnsignedInt>(c, std::is_same<T, UnsignedInt>{});
convertibleImplementation<Float>(c, std::is_same<T, Float>{}); convertibleImplementation<Float>(c, std::is_same<T, Float>{});
convertibleImplementation<Double>(c, std::is_same<T, Double>{}); convertibleImplementation<Double>(c, std::is_same<T, Double>{});
} }
template<template<class> class Type, class T, class ...Args> void convertible(py::class_<Type<T>, Args...>& c) { template<template<class> class Type, class T, class ...Args> void convertible(py::class_<Type<T>, Args...>& c) {
convertibleImplementation<Int>(c, std::is_same<T, Int>{}); convertibleImplementation<Int>(c, std::is_same<T, Int>{});
convertibleImplementation<UnsignedInt>(c, std::is_same<T, UnsignedInt>{});
convertibleImplementation<Float>(c, std::is_same<T, Float>{}); convertibleImplementation<Float>(c, std::is_same<T, Float>{});
convertibleImplementation<Double>(c, std::is_same<T, Double>{}); convertibleImplementation<Double>(c, std::is_same<T, Double>{});
} }
@ -356,6 +358,10 @@ void mathRange(py::module_& root, py::module_& m) {
py::class_<Range2Di> range2Di{root, "Range2Di", "Two-dimensional signed integral range"}; py::class_<Range2Di> range2Di{root, "Range2Di", "Two-dimensional signed integral range"};
py::class_<Range3Di> range3Di{root, "Range3Di", "Three-dimensional signed integral range"}; py::class_<Range3Di> range3Di{root, "Range3Di", "Three-dimensional signed integral range"};
py::class_<Range1Dui> range1Dui{root, "Range1Dui", "One-dimensional unsigned integral range"};
py::class_<Range2Dui> range2Dui{root, "Range2Dui", "Two-dimensional unsigned integral range"};
py::class_<Range3Dui> range3Dui{root, "Range3Dui", "Three-dimensional unsigned integral range"};
py::class_<Range1Dd> range1Dd{root, "Range1Dd", "One-dimensional double range"}; py::class_<Range1Dd> range1Dd{root, "Range1Dd", "One-dimensional double range"};
py::class_<Range2Dd> range2Dd{root, "Range2Dd", "Two-dimensional double range"}; py::class_<Range2Dd> range2Dd{root, "Range2Dd", "Two-dimensional double range"};
py::class_<Range3Dd> range3Dd{root, "Range3Dd", "Three-dimensional double range"}; py::class_<Range3Dd> range3Dd{root, "Range3Dd", "Three-dimensional double range"};
@ -366,6 +372,9 @@ void mathRange(py::module_& root, py::module_& m) {
convertible(range1Di); convertible(range1Di);
convertible(range2Di); convertible(range2Di);
convertible(range3Di); convertible(range3Di);
convertible(range1Dui);
convertible(range2Dui);
convertible(range3Dui);
convertible(range1Dd); convertible(range1Dd);
convertible(range2Dd); convertible(range2Dd);
convertible(range3Dd); convertible(range3Dd);
@ -376,23 +385,30 @@ void mathRange(py::module_& root, py::module_& m) {
range(m, range1Di); range(m, range1Di);
range(m, range2Di); range(m, range2Di);
range(m, range3Di); range(m, range3Di);
range(m, range1Dui);
range(m, range2Dui);
range(m, range3Dui);
range(m, range1Dd); range(m, range1Dd);
range(m, range2Dd); range(m, range2Dd);
range(m, range3Dd); range(m, range3Dd);
rangeND(range2D_); rangeND(range2D_);
rangeND(range2Di); rangeND(range2Di);
rangeND(range2Dui);
rangeND(range2Dd); rangeND(range2Dd);
rangeND(range3D_); rangeND(range3D_);
rangeND(range3Di); rangeND(range3Di);
rangeND(range3Dui);
rangeND(range3Dd); rangeND(range3Dd);
range2D(range2D_); range2D(range2D_);
range2D(range2Di); range2D(range2Di);
range2D(range2Dui);
range2D(range2Dd); range2D(range2Dd);
range3D(range3D_); range3D(range3D_);
range3D(range3Di); range3D(range3Di);
range3D(range3Dui);
range3D(range3Dd); range3D(range3Dd);
} }

Loading…
Cancel
Save