diff --git a/LibreMetaverse.Rendering.Meshmerizer/LibreMetaverse.Rendering.Meshmerizer.csproj b/LibreMetaverse.Rendering.Meshmerizer/LibreMetaverse.Rendering.Meshmerizer.csproj
index 07e7e324..efedecf2 100644
--- a/LibreMetaverse.Rendering.Meshmerizer/LibreMetaverse.Rendering.Meshmerizer.csproj
+++ b/LibreMetaverse.Rendering.Meshmerizer/LibreMetaverse.Rendering.Meshmerizer.csproj
@@ -50,7 +50,6 @@
-
diff --git a/LibreMetaverse.Rendering.Meshmerizer/MeshmerizerR.cs b/LibreMetaverse.Rendering.Meshmerizer/MeshmerizerR.cs
index 73f91e58..da6cf607 100644
--- a/LibreMetaverse.Rendering.Meshmerizer/MeshmerizerR.cs
+++ b/LibreMetaverse.Rendering.Meshmerizer/MeshmerizerR.cs
@@ -36,7 +36,7 @@
using System;
using System.Collections.Generic;
using System.IO;
-using IronSoftware.Drawing;
+using SkiaSharp;
using OpenMetaverse.StructuredData;
using LibreMetaverse.PrimMesher;
@@ -130,7 +130,7 @@ namespace OpenMetaverse.Rendering
/// Sculpt texture
/// Level of detail to generate the mesh at
/// The generated mesh or null on failure
- public SimpleMesh GenerateSimpleSculptMesh(Primitive prim, AnyBitmap sculptTexture, DetailLevel lod)
+ public SimpleMesh GenerateSimpleSculptMesh(Primitive prim, SKBitmap sculptTexture, DetailLevel lod)
{
var faceted = GenerateFacetedSculptMesh(prim, sculptTexture, lod);
@@ -225,7 +225,7 @@ namespace OpenMetaverse.Rendering
/// routine since all the context for finding teh texture is elsewhere.
///
/// The faceted mesh or null if can't do it
- public FacetedMesh GenerateFacetedSculptMesh(Primitive prim, AnyBitmap scupltTexture, DetailLevel lod)
+ public FacetedMesh GenerateFacetedSculptMesh(Primitive prim, SKBitmap scupltTexture, DetailLevel lod)
{
LibreMetaverse.PrimMesher.SculptMesh.SculptType smSculptType;
switch (prim.Sculpt.Type)
diff --git a/LibreMetaverse.Rendering.Simple/SimpleRenderer.cs b/LibreMetaverse.Rendering.Simple/SimpleRenderer.cs
index d5e4284d..134de88b 100644
--- a/LibreMetaverse.Rendering.Simple/SimpleRenderer.cs
+++ b/LibreMetaverse.Rendering.Simple/SimpleRenderer.cs
@@ -26,7 +26,7 @@
*/
using System.Collections.Generic;
-using IronSoftware.Drawing;
+using SkiaSharp;
namespace OpenMetaverse.Rendering
{
@@ -48,7 +48,7 @@ namespace OpenMetaverse.Rendering
return mesh;
}
- public SimpleMesh GenerateSimpleSculptMesh(Primitive prim, AnyBitmap sculptTexture, DetailLevel lod)
+ public SimpleMesh GenerateSimpleSculptMesh(Primitive prim, SKBitmap sculptTexture, DetailLevel lod)
{
return GenerateSimpleMesh(prim, lod);
}
@@ -67,7 +67,7 @@ namespace OpenMetaverse.Rendering
return mesh;
}
- public FacetedMesh GenerateFacetedSculptMesh(Primitive prim, AnyBitmap sculptTexture, DetailLevel lod)
+ public FacetedMesh GenerateFacetedSculptMesh(Primitive prim, SKBitmap sculptTexture, DetailLevel lod)
{
return GenerateFacetedMesh(prim, lod);
}
diff --git a/LibreMetaverse/Imaging/BakeLayer.cs b/LibreMetaverse/Imaging/BakeLayer.cs
index fa27efee..3a2d64ef 100644
--- a/LibreMetaverse/Imaging/BakeLayer.cs
+++ b/LibreMetaverse/Imaging/BakeLayer.cs
@@ -27,7 +27,7 @@
using System;
using System.Collections.Generic;
using System.IO;
-using IronSoftware.Drawing;
+using SkiaSharp;
using OpenMetaverse.Assets;
namespace OpenMetaverse.Imaging
@@ -356,14 +356,14 @@ namespace OpenMetaverse.Imaging
{
try
{
- AnyBitmap bitmap = null;
+ SKBitmap bitmap = null;
lock (ResourceSync)
{
using (Stream stream = Helpers.GetResourceStream(fileName, Settings.RESOURCE_DIR))
{
if (stream != null)
{
- bitmap = SkiaSharp.SKImage.FromEncodedData(stream);
+ bitmap = SKBitmap.Decode(stream);
}
}
}
diff --git a/LibreMetaverse/Imaging/ManagedImage.cs b/LibreMetaverse/Imaging/ManagedImage.cs
index 3bd26907..83eb502d 100644
--- a/LibreMetaverse/Imaging/ManagedImage.cs
+++ b/LibreMetaverse/Imaging/ManagedImage.cs
@@ -26,7 +26,7 @@
*/
using System;
-using IronSoftware.Drawing;
+using SkiaSharp;
namespace OpenMetaverse.Imaging
{
@@ -117,16 +117,16 @@ namespace OpenMetaverse.Imaging
/// Constructs ManagedImage class from AnyBitmap
///
/// Input AnyBitmap
- public ManagedImage(AnyBitmap bitmap)
+ public ManagedImage(SKBitmap bitmap)
{
Width = bitmap.Width;
Height = bitmap.Height;
var pixelCount = Width * Height;
- var bpp = bitmap.BitsPerPixel;
+ var bpp = bitmap.BytesPerPixel;
switch (bpp)
{
- case 32:
+ case 4:
Channels = ImageChannels.Alpha | ImageChannels.Color;
Red = new byte[pixelCount];
Green = new byte[pixelCount];
@@ -135,7 +135,7 @@ namespace OpenMetaverse.Imaging
unsafe
{
- byte* pixel = (byte*)bitmap.Scan0;
+ byte* pixel = (byte*)bitmap.GetPixels();
for (var i = 0; i < pixelCount; ++i)
{
@@ -148,7 +148,7 @@ namespace OpenMetaverse.Imaging
}
break;
- case 24:
+ case 3:
Channels = ImageChannels.Color;
Red = new byte[pixelCount];
Green = new byte[pixelCount];
@@ -156,7 +156,7 @@ namespace OpenMetaverse.Imaging
unsafe
{
- byte* pixel = (byte*)bitmap.Scan0;
+ byte* pixel = (byte*)bitmap.GetPixels();
for (var i = 0; i < pixelCount; ++i)
{
@@ -168,7 +168,7 @@ namespace OpenMetaverse.Imaging
}
break;
- case 16:
+ case 2:
Channels = ImageChannels.Gray;
Red = new byte[pixelCount];
@@ -340,7 +340,7 @@ namespace OpenMetaverse.Imaging
/// origin, suitable for feeding directly into OpenGL
///
/// A byte array containing raw texture data
- public AnyBitmap ExportBitmap()
+ public SKBitmap ExportBitmap()
{
var raw = new byte[Width * Height * 4];
@@ -377,7 +377,8 @@ namespace OpenMetaverse.Imaging
}
}
- return AnyBitmap.FromBytes(raw);
+ var img = SKImage.FromEncodedData(raw);
+ return SKBitmap.FromImage(img);
}
public byte[] ExportTGA()
diff --git a/LibreMetaverse/ImportExport/ColladalLoader.cs b/LibreMetaverse/ImportExport/ColladalLoader.cs
index b96b566f..3d29707d 100644
--- a/LibreMetaverse/ImportExport/ColladalLoader.cs
+++ b/LibreMetaverse/ImportExport/ColladalLoader.cs
@@ -33,10 +33,8 @@ using System.IO;
using System.Xml;
using System.Linq;
using System.Xml.Serialization;
-using IronSoftware.Drawing;
using OpenMetaverse.ImportExport.Collada14;
using OpenMetaverse.Rendering;
-using OpenMetaverse.Imaging;
using SkiaSharp;
namespace OpenMetaverse.ImportExport
@@ -120,7 +118,7 @@ namespace OpenMetaverse.ImportExport
{
string ext = System.IO.Path.GetExtension(material.Texture).ToLower();
- AnyBitmap bitmap;
+ SKBitmap bitmap;
switch (ext)
{
@@ -129,7 +127,8 @@ namespace OpenMetaverse.ImportExport
material.TextureData = File.ReadAllBytes(fname);
return;
default:
- bitmap = AnyBitmap.FromFile(fname);
+ var img = SKImage.FromEncodedData(fname);
+ bitmap = SKBitmap.FromImage(img);
break;
}
@@ -154,7 +153,7 @@ namespace OpenMetaverse.ImportExport
var scaledImage = SKImage.Create(info);
var skImage = SKImage.FromBitmap(bitmap);
skImage.ScalePixels(scaledImage.PeekPixels(), SKFilterQuality.High);
- bitmap = scaledImage;
+ bitmap = SKBitmap.FromImage(scaledImage);
}
using (var writer = new OpenJpegDotNet.IO.Writer(bitmap))
diff --git a/LibreMetaverse/Interfaces/IRendering.cs b/LibreMetaverse/Interfaces/IRendering.cs
index 14e5f2a5..073f01a8 100644
--- a/LibreMetaverse/Interfaces/IRendering.cs
+++ b/LibreMetaverse/Interfaces/IRendering.cs
@@ -26,7 +26,7 @@
using System;
using System.Collections.Generic;
-using IronSoftware.Drawing;
+using SkiaSharp;
namespace OpenMetaverse.Rendering
{
@@ -67,7 +67,7 @@ namespace OpenMetaverse.Rendering
/// Sculpt texture
/// Level of detail to generate the mesh at
/// The generated mesh
- SimpleMesh GenerateSimpleSculptMesh(Primitive prim, AnyBitmap sculptTexture, DetailLevel lod);
+ SimpleMesh GenerateSimpleSculptMesh(Primitive prim, SKBitmap sculptTexture, DetailLevel lod);
///
/// Generates a series of faces, each face containing a mesh and
@@ -86,7 +86,7 @@ namespace OpenMetaverse.Rendering
/// Sculpt texture
/// Level of detail to generate the mesh at
/// The generated mesh
- FacetedMesh GenerateFacetedSculptMesh(Primitive prim, AnyBitmap sculptTexture, DetailLevel lod);
+ FacetedMesh GenerateFacetedSculptMesh(Primitive prim, SKBitmap sculptTexture, DetailLevel lod);
///
/// Apply texture coordinate modifications from a
diff --git a/LibreMetaverse/LibreMetaverse.csproj b/LibreMetaverse/LibreMetaverse.csproj
index 5f892ef5..67031ea5 100644
--- a/LibreMetaverse/LibreMetaverse.csproj
+++ b/LibreMetaverse/LibreMetaverse.csproj
@@ -43,7 +43,6 @@
True
-
diff --git a/PrimMesher/LibreMetaverse.PrimMesher.csproj b/PrimMesher/LibreMetaverse.PrimMesher.csproj
index a6e94ed0..b2f186d3 100644
--- a/PrimMesher/LibreMetaverse.PrimMesher.csproj
+++ b/PrimMesher/LibreMetaverse.PrimMesher.csproj
@@ -52,7 +52,6 @@
-
diff --git a/PrimMesher/SculptMap.cs b/PrimMesher/SculptMap.cs
index 101c168f..da688f0d 100644
--- a/PrimMesher/SculptMap.cs
+++ b/PrimMesher/SculptMap.cs
@@ -27,7 +27,6 @@
using System;
using System.Collections.Generic;
-using IronSoftware.Drawing;
using SkiaSharp;
namespace LibreMetaverse.PrimMesher
@@ -44,7 +43,7 @@ namespace LibreMetaverse.PrimMesher
{
}
- public SculptMap(AnyBitmap bm, int lod)
+ public SculptMap(SKBitmap bm, int lod)
{
var bmW = bm.Width;
var bmH = bm.Height;
@@ -100,9 +99,9 @@ namespace LibreMetaverse.PrimMesher
{
var c = bm.GetPixel(x, y);
- redBytes[byteNdx] = c.R;
- greenBytes[byteNdx] = c.G;
- blueBytes[byteNdx] = c.B;
+ redBytes[byteNdx] = c.Red;
+ greenBytes[byteNdx] = c.Green;
+ blueBytes[byteNdx] = c.Blue;
++byteNdx;
}
@@ -113,9 +112,9 @@ namespace LibreMetaverse.PrimMesher
var c = bm.GetPixel(x < width ? x * 2 : x * 2 - 1,
y < height ? y * 2 : y * 2 - 1);
- redBytes[byteNdx] = c.R;
- greenBytes[byteNdx] = c.G;
- blueBytes[byteNdx] = c.B;
+ redBytes[byteNdx] = c.Red;
+ greenBytes[byteNdx] = c.Green;
+ blueBytes[byteNdx] = c.Blue;
++byteNdx;
}
@@ -163,13 +162,13 @@ namespace LibreMetaverse.PrimMesher
return rows;
}
- private AnyBitmap ScaleImage(AnyBitmap srcImage, int destWidth, int destHeight)
+ private SKBitmap ScaleImage(SKBitmap srcImage, int destWidth, int destHeight)
{
var info = new SKImageInfo(destWidth, destHeight);
var scaledImage = SKImage.Create(info);
var skImage = SKImage.FromBitmap(srcImage);
skImage.ScalePixels(scaledImage.PeekPixels(), SKFilterQuality.High);
- return scaledImage;
+ return SKBitmap.FromImage(scaledImage);
}
}
}
\ No newline at end of file
diff --git a/PrimMesher/SculptMesh.cs b/PrimMesher/SculptMesh.cs
index 132f3b1a..1deafbab 100644
--- a/PrimMesher/SculptMesh.cs
+++ b/PrimMesher/SculptMesh.cs
@@ -28,8 +28,7 @@
using System;
using System.Collections.Generic;
using System.IO;
-using IronSoftware.Drawing;
-using Color = IronSoftware.Drawing.Color;
+using SkiaSharp;
namespace LibreMetaverse.PrimMesher
{
@@ -53,9 +52,9 @@ namespace LibreMetaverse.PrimMesher
public SculptMesh(string fileName, int sculptType, int lod, int viewerMode, int mirror, int invert)
{
- var bitmap = AnyBitmap.FromFile(fileName);
- _SculptMesh(bitmap, (SculptType) sculptType, lod, viewerMode != 0, mirror != 0, invert != 0);
- bitmap.Dispose();
+ var img = SKImage.FromEncodedData(fileName);
+ var bitmap = SKBitmap.FromImage(img);
+ _SculptMesh(bitmap, (SculptType)sculptType, lod, viewerMode != 0, mirror != 0, invert != 0);
}
///
@@ -165,12 +164,12 @@ namespace LibreMetaverse.PrimMesher
calcVertexNormals(SculptType.plane, numXElements, numYElements);
}
- public SculptMesh(AnyBitmap sculptBitmap, SculptType sculptType, int lod, bool viewerMode)
+ public SculptMesh(SKBitmap sculptBitmap, SculptType sculptType, int lod, bool viewerMode)
{
_SculptMesh(sculptBitmap, sculptType, lod, viewerMode, false, false);
}
- public SculptMesh(AnyBitmap sculptBitmap, SculptType sculptType, int lod, bool viewerMode, bool mirror,
+ public SculptMesh(SKBitmap sculptBitmap, SculptType sculptType, int lod, bool viewerMode, bool mirror,
bool invert)
{
_SculptMesh(sculptBitmap, sculptType, lod, viewerMode, mirror, invert);
@@ -192,7 +191,8 @@ namespace LibreMetaverse.PrimMesher
public SculptMesh SculptMeshFromFile(string fileName, SculptType sculptType, int lod, bool viewerMode)
{
- var bitmap = AnyBitmap.FromFile(fileName);
+ var img = SKImage.FromEncodedData(fileName);
+ var bitmap = SKBitmap.FromImage(img);
var sculptMesh = new SculptMesh(bitmap, sculptType, lod, viewerMode);
bitmap.Dispose();
return sculptMesh;
@@ -208,7 +208,7 @@ namespace LibreMetaverse.PrimMesher
///
///
///
- private List> bitmap2Coords(AnyBitmap bitmap, int scale, bool mirror)
+ private List> bitmap2Coords(SKBitmap bitmap, int scale, bool mirror)
{
var numRows = bitmap.Height / scale;
var numCols = bitmap.Width / scale;
@@ -237,14 +237,14 @@ namespace LibreMetaverse.PrimMesher
for (imageY = imageYStart; imageY < imageYEnd; imageY++)
{
var c = bitmap.GetPixel(imageX, imageY);
- if (c.A != 255)
+ if (c.Alpha != 255)
{
- bitmap.SetPixel(imageX, imageY, Color.FromArgb(255, c.R, c.G, c.B));
+ bitmap.SetPixel(imageX, imageY, c.WithAlpha(255));
c = bitmap.GetPixel(imageX, imageY);
}
- rSum += c.R;
- gSum += c.G;
- bSum += c.B;
+ rSum += c.Red;
+ gSum += c.Green;
+ bSum += c.Blue;
}
row.Add(mirror
? new Coord(-(rSum * pixScale - 0.5f), gSum * pixScale - 0.5f, bSum * pixScale - 0.5f)
@@ -255,7 +255,7 @@ namespace LibreMetaverse.PrimMesher
return rows;
}
- private List> bitmap2CoordsSampled(AnyBitmap bitmap, int scale, bool mirror)
+ private List> bitmap2CoordsSampled(SKBitmap bitmap, int scale, bool mirror)
{
var numRows = bitmap.Height / scale;
var numCols = bitmap.Width / scale;
@@ -278,15 +278,15 @@ namespace LibreMetaverse.PrimMesher
if (colNdx == numCols) imageX--;
var c = bitmap.GetPixel(imageX, imageY);
- if (c.A != 255)
+ if (c.Alpha != 255)
{
- bitmap.SetPixel(imageX, imageY, Color.FromArgb(255, c.R, c.G, c.B));
+ bitmap.SetPixel(imageX, imageY, c.WithAlpha(255));
c = bitmap.GetPixel(imageX, imageY);
}
row.Add(mirror
- ? new Coord(-(c.R * pixScale - 0.5f), c.G * pixScale - 0.5f, c.B * pixScale - 0.5f)
- : new Coord(c.R * pixScale - 0.5f, c.G * pixScale - 0.5f, c.B * pixScale - 0.5f));
+ ? new Coord(-(c.Red * pixScale - 0.5f), c.Green * pixScale - 0.5f, c.Blue * pixScale - 0.5f)
+ : new Coord(c.Red * pixScale - 0.5f, c.Green * pixScale - 0.5f, c.Blue * pixScale - 0.5f));
}
rows.Add(row);
}
@@ -294,7 +294,7 @@ namespace LibreMetaverse.PrimMesher
}
- private void _SculptMesh(AnyBitmap sculptBitmap, SculptType sculptType, int lod, bool viewerMode, bool mirror,
+ private void _SculptMesh(SKBitmap sculptBitmap, SculptType sculptType, int lod, bool viewerMode, bool mirror,
bool invert)
{
_SculptMesh(new SculptMap(sculptBitmap, lod).ToRows(mirror), sculptType, viewerMode, mirror, invert);
diff --git a/Programs/examples/TestClient/Commands/Inventory/UploadImageCommand.cs b/Programs/examples/TestClient/Commands/Inventory/UploadImageCommand.cs
index 36a5e403..c9a4af7c 100644
--- a/Programs/examples/TestClient/Commands/Inventory/UploadImageCommand.cs
+++ b/Programs/examples/TestClient/Commands/Inventory/UploadImageCommand.cs
@@ -27,7 +27,6 @@
using System;
using System.Threading;
-using IronSoftware.Drawing;
using SkiaSharp;
namespace OpenMetaverse.TestClient
@@ -100,7 +99,7 @@ namespace OpenMetaverse.TestClient
try
{
- AnyBitmap bitmap;
+ SKBitmap bitmap;
if (lowfilename.EndsWith(".jp2") || lowfilename.EndsWith(".j2c"))
{
// Upload JPEG2000 images untouched
@@ -114,7 +113,8 @@ namespace OpenMetaverse.TestClient
}
else
{
- bitmap = AnyBitmap.FromFile(fileName);
+ var img = SKImage.FromEncodedData(fileName);
+ bitmap = SKBitmap.FromImage(img);
int oldwidth = bitmap.Width;
int oldheight = bitmap.Height;
@@ -125,7 +125,7 @@ namespace OpenMetaverse.TestClient
var skImage = SKImage.FromBitmap(bitmap);
skImage.ScalePixels(scaledImage.PeekPixels(), SKFilterQuality.High);
- bitmap = scaledImage;
+ bitmap = SKBitmap.FromImage(scaledImage);
oldwidth = 256;
oldheight = 256;
@@ -142,7 +142,7 @@ namespace OpenMetaverse.TestClient
var skImage = SKImage.FromBitmap(bitmap);
skImage.ScalePixels(scaledImage.PeekPixels(), SKFilterQuality.High);
- bitmap = scaledImage;
+ bitmap = SKBitmap.FromImage(scaledImage);
}
}