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); auto sizes16 = Containers::arrayCast<Vector2s>(*sizeData);
Containers::Array<Vector2i> sizes{NoInit, sizes16.size()}; Containers::Array<Vector2i> sizes{NoInit, sizes16.size()};
Math::castInto( Math::castInto(
Containers::arrayCast<2, const Short>(stridedArrayView(sizes16)), stridedArrayView(sizes16).slice(&Vector2s::data),
Containers::arrayCast<2, Int>(stridedArrayView(sizes))); stridedArrayView(sizes).slice(&Vector2i::data));
TextureTools::AtlasLandfill atlas{{512, 512}}; TextureTools::AtlasLandfill atlas{{512, 512}};
Containers::Array<Vector2i> offsets{NoInit, sizes.size()}; 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{ Animation::TrackView<const Float, const Vector2> positions{
{data, &data[0].time, Containers::arraySize(data), sizeof(Keyframe)}, Containers::stridedArrayView(data).slice(&Keyframe::time),
{data, &data[0].position, Containers::arraySize(data), sizeof(Keyframe)}, Containers::stridedArrayView(data).slice(&Keyframe::position),
Math::lerp}; Math::lerp};
Animation::TrackView<const Float, const Deg> rotations{ Animation::TrackView<const Float, const Deg> rotations{
{data, &data[0].time, Containers::arraySize(data), sizeof(Keyframe)}, Containers::stridedArrayView(data).slice(&Keyframe::time),
{data, &data[0].rotation, Containers::arraySize(data), sizeof(Keyframe)}, Containers::stridedArrayView(data).slice(&Keyframe::rotation),
Math::lerp}; Math::lerp};
Float time = 2.2f; 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::MeshData data{MeshPrimitive::Faces, std::move(vertexData), {
Trade::MeshAttributeData{TriangleIds, Trade::MeshAttributeData{TriangleIds,
Containers::StridedArrayView2D<const UnsignedShort>{faces, Containers::StridedArrayView2D<const UnsignedShort>{
&faces[0].triangleIds[0], stridedArrayView(faces).slice(&Face::triangleIds)}},
{faces.size(), 15},
{sizeof(Face), sizeof(UnsignedShort)}}},
Trade::MeshAttributeData{TriangleCount, Trade::MeshAttributeData{TriangleCount,
Containers::StridedArrayView1D<const UnsignedByte>{faces, stridedArrayView(faces).slice(&Face::triangleCount)}
&faces[0].triangleCount, faces.size(), sizeof(Face)}}
}}; }};
/* [MeshData-populating-custom] */ /* [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.interpolator(), reinterpret_cast<void(*)()>(customLerp));
CORRADE_COMPARE(b.keys().size(), 2); CORRADE_COMPARE(b.keys().size(), 2);
CORRADE_COMPARE(b.values().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})); CORRADE_COMPARE(Containers::arrayCast<Vector3>(b.values())[1], (Vector3{0.3f, 0.6f, 1.0f}));
auto& bv = *static_cast<const TrackView<Float, Vector3>*>(&b); 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 */ /* Array field */
Trade::SceneFieldData{Trade::sceneFieldCustom(15), Trade::SceneFieldData{Trade::sceneFieldCustom(15),
foos.slice(&Foo::mapping), foos.slice(&Foo::mapping),
Containers::arrayCast<2, const Int>(foos.slice(&Foo::foo)), Containers::StridedArrayView2D<const Int>{foos.slice(&Foo::foo)},
Trade::SceneFieldFlag::OrderedMapping}, Trade::SceneFieldFlag::OrderedMapping},
/* Empty field */ /* Empty field */
Trade::SceneFieldData{Trade::SceneField::Camera, Containers::ArrayView<const UnsignedByte>{}, Containers::ArrayView<const UnsignedShort>{}}, 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 /** @todo clean up once it's possible to compare multidimensional
containers */ containers */
CORRADE_COMPARE_AS(scene.field<Int[]>(3)[0], 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); TestSuite::Compare::Container);
CORRADE_COMPARE_AS(scene.field<Int[]>(3)[1], 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); TestSuite::Compare::Container);
CORRADE_COMPARE(scene.fieldName(4), Trade::SceneField::Camera); 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. */ because items are removed. */
Trade::SceneFieldData{Trade::sceneFieldCustom(333), Trade::SceneFieldData{Trade::sceneFieldCustom(333),
Containers::arrayView(sceneData->arrayMapping), Containers::arrayView(sceneData->arrayMapping),
Containers::arrayCast<2, const Float>(Containers::stridedArrayView(sceneData->array)), Containers::StridedArrayView2D<const Float>{Containers::stridedArrayView(sceneData->array)},
Trade::SceneFieldFlag::ImplicitMapping}, Trade::SceneFieldFlag::ImplicitMapping},
/* Bit field. Should cause no assert as it's just passed through. */ /* Bit field. Should cause no assert as it's just passed through. */
Trade::SceneFieldData{Trade::sceneFieldCustom(15), 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}); Image2D rendered = _framebuffer.read(_framebuffer.viewport(), {PixelFormat::RGBA8Unorm});
/* Dropping the alpha channel, as it's always 1.0 */ /* Dropping the alpha channel, as it's always 1.0 */
Containers::StridedArrayView2D<Color3ub> pixels = 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(data.flip) pixels = pixels.flipped<0>().flipped<1>();
#if !(defined(MAGNUM_TARGET_GLES2) && defined(MAGNUM_TARGET_WEBGL)) #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); auto sizes16 = Containers::arrayCast<Vector2s>(*sizeData);
Containers::Array<Vector2i> sizes{NoInit, sizes16.size()}; Containers::Array<Vector2i> sizes{NoInit, sizes16.size()};
Math::castInto( Math::castInto(
Containers::arrayCast<2, const Short>(stridedArrayView(sizes16)), stridedArrayView(sizes16).slice(&Vector2s::data),
Containers::arrayCast<2, Int>(stridedArrayView(sizes))); stridedArrayView(sizes).slice(&Vector2i::data));
_sizes = sizes; _sizes = sizes;
AtlasLandfill atlas{data.size}; AtlasLandfill atlas{data.size};
@ -396,8 +396,8 @@ void AtlasBenchmark::stbRectPack() {
auto sizes16 = Containers::arrayCast<Vector2s>(*sizeData); auto sizes16 = Containers::arrayCast<Vector2s>(*sizeData);
Containers::Array<Vector2i> sizes{NoInit, sizes16.size()}; Containers::Array<Vector2i> sizes{NoInit, sizes16.size()};
Math::castInto( Math::castInto(
Containers::arrayCast<2, const Short>(stridedArrayView(sizes16)), stridedArrayView(sizes16).slice(&Vector2s::data),
Containers::arrayCast<2, Int>(stridedArrayView(sizes))); stridedArrayView(sizes).slice(&Vector2i::data));
_sizes = sizes; _sizes = sizes;
if(data.rotate) for(Vector2i& size: _sizes) { if(data.rotate) for(Vector2i& size: _sizes) {

Loading…
Cancel
Save