Skip to content

Commit 724bd61

Browse files
committed
Fix overflow issue
1 parent 44599c8 commit 724bd61

File tree

4 files changed

+12
-19
lines changed

4 files changed

+12
-19
lines changed

src/ImageSharp.Textures/PixelFormats/Generated/D32_FLOAT_S8X24_UINT.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -171,9 +171,8 @@ public override string ToString()
171171
private static ulong Pack(ref Vector2 vector)
172172
{
173173
vector = Vector2.Clamp(vector, Vector2.Zero, Vector2.One);
174-
return (ulong)(
175-
(uint)FloatHelper.PackFloatToFloat32(vector.X)
176-
| (((uint)Math.Round(vector.Y * 255F) & 255) << 32));
174+
return (ulong)FloatHelper.PackFloatToFloat32(vector.X)
175+
| ((ulong)((uint)Math.Round(vector.Y * 255F) & 255) << 32);
177176
}
178177
}
179178
}

src/ImageSharp.Textures/PixelFormats/Generated/PixelGenerator.ignore

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -904,11 +904,10 @@ namespace SixLabors.ImageSharp.Textures.PixelFormats
904904
private static ulong Pack(ref Vector4 vector)
905905
{
906906
vector = Vector4.Clamp(vector, Vector4.Zero, Vector4.One);
907-
return (ulong)(
908-
(uint)FloatHelper.PackFloatToFloat16(vector.X)
909-
| ((uint)FloatHelper.PackFloatToFloat16(vector.Y) << 16)
910-
| ((uint)FloatHelper.PackFloatToFloat16(vector.Z) << 32)
911-
| ((uint)FloatHelper.PackFloatToFloat16(vector.W) << 48));
907+
return (ulong)FloatHelper.PackFloatToFloat16(vector.X)
908+
| ((ulong)FloatHelper.PackFloatToFloat16(vector.Y) << 16)
909+
| ((ulong)FloatHelper.PackFloatToFloat16(vector.Z) << 32)
910+
| ((ulong)FloatHelper.PackFloatToFloat16(vector.W) << 48);
912911
}
913912
}
914913
}
@@ -1598,9 +1597,8 @@ namespace SixLabors.ImageSharp.Textures.PixelFormats
15981597
private static ulong Pack(ref Vector2 vector)
15991598
{
16001599
vector = Vector2.Clamp(vector, Vector2.Zero, Vector2.One);
1601-
return (ulong)(
1602-
(uint)FloatHelper.PackFloatToFloat32(vector.X)
1603-
| (((uint)Math.Round(vector.Y * 255F) & 255) << 32));
1600+
return (ulong)FloatHelper.PackFloatToFloat32(vector.X)
1601+
| ((ulong)((uint)Math.Round(vector.Y * 255F) & 255) << 32);
16041602
}
16051603
}
16061604
}

src/ImageSharp.Textures/PixelFormats/Generated/Rgba64Float.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -171,11 +171,10 @@ public override string ToString()
171171
private static ulong Pack(ref Vector4 vector)
172172
{
173173
vector = Vector4.Clamp(vector, Vector4.Zero, Vector4.One);
174-
return (ulong)(
175-
(uint)FloatHelper.PackFloatToFloat16(vector.X)
176-
| ((uint)FloatHelper.PackFloatToFloat16(vector.Y) << 16)
177-
| ((uint)FloatHelper.PackFloatToFloat16(vector.Z) << 32)
178-
| ((uint)FloatHelper.PackFloatToFloat16(vector.W) << 48));
174+
return (ulong)FloatHelper.PackFloatToFloat16(vector.X)
175+
| ((ulong)FloatHelper.PackFloatToFloat16(vector.Y) << 16)
176+
| ((ulong)FloatHelper.PackFloatToFloat16(vector.Z) << 32)
177+
| ((ulong)FloatHelper.PackFloatToFloat16(vector.W) << 48);
179178
}
180179
}
181180
}

tests/ImageSharp.Textures.Tests/Formats/Ktx/KtxHdrDecoderFlatTests.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,9 +147,6 @@ public void CanDecode_RGB96F(TestTextureProvider provider)
147147
firstMipMapImage.CompareToReferenceOutput(provider);
148148
}
149149

150-
// TODO: This test is failing because the decoded image has 0 alpha, but the png is saved with 1 alpha.
151-
// Not sure if this is an issue with the decoder, or the way the reference image was saved.
152-
// The RGBA32F image has 1 alpha
153150
[Theory]
154151
[WithFile(TestTextureFormat.Ktx, TestTextureType.Flat, TestTextureTool.ToKtx, TestImages.Ktx.Hdr.Rgba64)]
155152
public void CanDecode_RGBA64F(TestTextureProvider provider)

0 commit comments

Comments
 (0)