Browse Source

Prefer member slicing instead of arrayCast() in various other places.

pull/674/head
Vladimír Vondruš 1 year ago
parent
commit
0ee9c0b8e6
  1. 4
      doc/generated/atlas.cpp
  2. 8
      doc/snippets/Animation.cpp
  3. 9
      doc/snippets/Trade.cpp
  4. 2
      src/Magnum/Animation/Test/TrackViewTest.cpp
  5. 6
      src/Magnum/SceneTools/Test/CombineTest.cpp
  6. 2
      src/Magnum/SceneTools/Test/FilterTest.cpp
  7. 2
      src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp
  8. 8
      src/Magnum/TextureTools/Test/AtlasBenchmark.cpp

4
doc/generated/atlas.cpp

@ -130,8 +130,8 @@ int main() {
auto sizes16 = Containers::arrayCast<Vector2s>(*sizeData);
Containers::Array<Vector2i> sizes{NoInit, sizes16.size()};
Math::castInto(
Containers::arrayCast<2, const Short>(stridedArrayView(sizes16)),
Containers::arrayCast<2, Int>(stridedArrayView(sizes)));
stridedArrayView(sizes16).slice(&Vector2s::data),
stridedArrayView(sizes).slice(&Vector2i::data));
TextureTools::AtlasLandfill atlas{{512, 512}};
Containers::Array<Vector2i> offsets{NoInit, sizes.size()};

8
doc/snippets/Animation.cpp

@ -337,12 +337,12 @@ const Keyframe data[]{
};
Animation::TrackView<const Float, const Vector2> positions{
{data, &data[0].time, Containers::arraySize(data), sizeof(Keyframe)},
{data, &data[0].position, Containers::arraySize(data), sizeof(Keyframe)},
Containers::stridedArrayView(data).slice(&Keyframe::time),
Containers::stridedArrayView(data).slice(&Keyframe::position),
Math::lerp};
Animation::TrackView<const Float, const Deg> rotations{
{data, &data[0].time, Containers::arraySize(data), sizeof(Keyframe)},
{data, &data[0].rotation, Containers::arraySize(data), sizeof(Keyframe)},
Containers::stridedArrayView(data).slice(&Keyframe::time),
Containers::stridedArrayView(data).slice(&Keyframe::rotation),
Math::lerp};
Float time = 2.2f;

9
doc/snippets/Trade.cpp

@ -1006,13 +1006,10 @@ auto faces = Containers::arrayCast<const Face>(vertexData);
Trade::MeshData data{MeshPrimitive::Faces, std::move(vertexData), {
Trade::MeshAttributeData{TriangleIds,
Containers::StridedArrayView2D<const UnsignedShort>{faces,
&faces[0].triangleIds[0],
{faces.size(), 15},
{sizeof(Face), sizeof(UnsignedShort)}}},
Containers::StridedArrayView2D<const UnsignedShort>{
stridedArrayView(faces).slice(&Face::triangleIds)}},
Trade::MeshAttributeData{TriangleCount,
Containers::StridedArrayView1D<const UnsignedByte>{faces,
&faces[0].triangleCount, faces.size(), sizeof(Face)}}
stridedArrayView(faces).slice(&Face::triangleCount)}
}};
/* [MeshData-populating-custom] */

2
src/Magnum/Animation/Test/TrackViewTest.cpp

@ -589,7 +589,7 @@ void TrackViewTest::constructCopyStorage() {
CORRADE_COMPARE(b.interpolator(), reinterpret_cast<void(*)()>(customLerp));
CORRADE_COMPARE(b.keys().size(), 2);
CORRADE_COMPARE(b.values().size(), 2);
CORRADE_COMPARE(Containers::arrayCast<Float>(b.keys())[1], 5.0f);
CORRADE_COMPARE(b.keys()[1], 5.0f);
CORRADE_COMPARE(Containers::arrayCast<Vector3>(b.values())[1], (Vector3{0.3f, 0.6f, 1.0f}));
auto& bv = *static_cast<const TrackView<Float, Vector3>*>(&b);

6
src/Magnum/SceneTools/Test/CombineTest.cpp

@ -256,7 +256,7 @@ void CombineTest::fields() {
/* Array field */
Trade::SceneFieldData{Trade::sceneFieldCustom(15),
foos.slice(&Foo::mapping),
Containers::arrayCast<2, const Int>(foos.slice(&Foo::foo)),
Containers::StridedArrayView2D<const Int>{foos.slice(&Foo::foo)},
Trade::SceneFieldFlag::OrderedMapping},
/* Empty field */
Trade::SceneFieldData{Trade::SceneField::Camera, Containers::ArrayView<const UnsignedByte>{}, Containers::ArrayView<const UnsignedShort>{}},
@ -320,10 +320,10 @@ void CombineTest::fields() {
/** @todo clean up once it's possible to compare multidimensional
containers */
CORRADE_COMPARE_AS(scene.field<Int[]>(3)[0],
(Containers::arrayCast<2, const Int>(foos.slice(&Foo::foo)))[0],
(Containers::StridedArrayView2D<const Int>{foos.slice(&Foo::foo)})[0],
TestSuite::Compare::Container);
CORRADE_COMPARE_AS(scene.field<Int[]>(3)[1],
(Containers::arrayCast<2, const Int>(foos.slice(&Foo::foo)))[1],
(Containers::StridedArrayView2D<const Int>{foos.slice(&Foo::foo)})[1],
TestSuite::Compare::Container);
CORRADE_COMPARE(scene.fieldName(4), Trade::SceneField::Camera);

2
src/Magnum/SceneTools/Test/FilterTest.cpp

@ -513,7 +513,7 @@ void FilterTest::fieldEntries() {
because items are removed. */
Trade::SceneFieldData{Trade::sceneFieldCustom(333),
Containers::arrayView(sceneData->arrayMapping),
Containers::arrayCast<2, const Float>(Containers::stridedArrayView(sceneData->array)),
Containers::StridedArrayView2D<const Float>{Containers::stridedArrayView(sceneData->array)},
Trade::SceneFieldFlag::ImplicitMapping},
/* Bit field. Should cause no assert as it's just passed through. */
Trade::SceneFieldData{Trade::sceneFieldCustom(15),

2
src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp

@ -1511,7 +1511,7 @@ template<DistanceFieldVectorGL3D::Flag flag> void DistanceFieldVectorGLTest::ren
Image2D rendered = _framebuffer.read(_framebuffer.viewport(), {PixelFormat::RGBA8Unorm});
/* Dropping the alpha channel, as it's always 1.0 */
Containers::StridedArrayView2D<Color3ub> pixels =
Containers::arrayCast<Color3ub>(rendered.pixels<Color4ub>());
rendered.pixels<Color4ub>().slice(&Color4ub::rgb);
if(data.flip) pixels = pixels.flipped<0>().flipped<1>();
#if !(defined(MAGNUM_TARGET_GLES2) && defined(MAGNUM_TARGET_WEBGL))

8
src/Magnum/TextureTools/Test/AtlasBenchmark.cpp

@ -364,8 +364,8 @@ void AtlasBenchmark::landfill() {
auto sizes16 = Containers::arrayCast<Vector2s>(*sizeData);
Containers::Array<Vector2i> sizes{NoInit, sizes16.size()};
Math::castInto(
Containers::arrayCast<2, const Short>(stridedArrayView(sizes16)),
Containers::arrayCast<2, Int>(stridedArrayView(sizes)));
stridedArrayView(sizes16).slice(&Vector2s::data),
stridedArrayView(sizes).slice(&Vector2i::data));
_sizes = sizes;
AtlasLandfill atlas{data.size};
@ -396,8 +396,8 @@ void AtlasBenchmark::stbRectPack() {
auto sizes16 = Containers::arrayCast<Vector2s>(*sizeData);
Containers::Array<Vector2i> sizes{NoInit, sizes16.size()};
Math::castInto(
Containers::arrayCast<2, const Short>(stridedArrayView(sizes16)),
Containers::arrayCast<2, Int>(stridedArrayView(sizes)));
stridedArrayView(sizes16).slice(&Vector2s::data),
stridedArrayView(sizes).slice(&Vector2i::data));
_sizes = sizes;
if(data.rotate) for(Vector2i& size: _sizes) {

Loading…
Cancel
Save