From 00cc17c2390c8d558774bc237bdff7141d8209eb Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sun, 6 May 2018 23:28:36 +0100 Subject: breaking map (warp3d) --- OpenSim/Framework/Util.cs | 31 ++++++++++++++++++++ .../CoreModules/World/Warp3DMap/TerrainSplat.cs | 4 +-- .../World/Warp3DMap/Warp3DImageModule.cs | 33 ++-------------------- .../CoreModules/World/WorldMap/WorldMapModule.cs | 9 ++---- 4 files changed, 38 insertions(+), 39 deletions(-) (limited to 'OpenSim') diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index c103c5c..c5c4ab3 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs @@ -30,6 +30,8 @@ using System.Collections; using System.Collections.Generic; using System.Data; using System.Diagnostics; +using System.Drawing; +using System.Drawing.Imaging; using System.Globalization; using System.IO; using System.IO.Compression; @@ -3442,6 +3444,34 @@ namespace OpenSim.Framework m_log.ErrorFormat("{0} Failed XML ({1} bytes) = {2}", message, length, xml); } + /// + /// Performs a high quality image resize + /// + /// Image to resize + /// New width + /// New height + /// Resized image + public static Bitmap ResizeImageSolid(Image image, int width, int height) + { + Bitmap result = new Bitmap(width, height, PixelFormat.Format24bppRgb); + + using (ImageAttributes atrib = new ImageAttributes()) + using (Graphics graphics = Graphics.FromImage(result)) + { + atrib.SetWrapMode(System.Drawing.Drawing2D.WrapMode.TileFlipXY); + atrib.SetWrapMode(System.Drawing.Drawing2D.WrapMode.TileFlipXY); + graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; + graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; + graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; + graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.None; + + graphics.DrawImage(image,new Rectangle(0,0, result.Width, result.Height), + 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, atrib); + } + + return result; + } + } /* don't like this code @@ -3606,5 +3636,6 @@ namespace OpenSim.Framework { rng.GetBytes(buff); } + } } diff --git a/OpenSim/Region/CoreModules/World/Warp3DMap/TerrainSplat.cs b/OpenSim/Region/CoreModules/World/Warp3DMap/TerrainSplat.cs index 8b9e0d3..622b16c 100644 --- a/OpenSim/Region/CoreModules/World/Warp3DMap/TerrainSplat.cs +++ b/OpenSim/Region/CoreModules/World/Warp3DMap/TerrainSplat.cs @@ -161,7 +161,7 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap if(detailTexture[i].PixelFormat != PixelFormat.Format24bppRgb || detailTexture[i].Width != 16 || detailTexture[i].Height != 16) using(Bitmap origBitmap = detailTexture[i]) - detailTexture[i] = ImageUtils.ResizeImageSolid(origBitmap, 16, 16); + detailTexture[i] = Util.ResizeImageSolid(origBitmap, 16, 16); // Save the decoded and resized texture to the cache byte[] data; @@ -260,7 +260,7 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap if(detailTexture[i].Width != 16 || detailTexture[i].Height != 16) { using(Bitmap origBitmap = detailTexture[i]) - detailTexture[i] = ImageUtils.ResizeImageSolid(origBitmap, 16, 16); + detailTexture[i] = Util.ResizeImageSolid(origBitmap, 16, 16); } } } diff --git a/OpenSim/Region/CoreModules/World/Warp3DMap/Warp3DImageModule.cs b/OpenSim/Region/CoreModules/World/Warp3DMap/Warp3DImageModule.cs index ca95b67..eefd0af 100644 --- a/OpenSim/Region/CoreModules/World/Warp3DMap/Warp3DImageModule.cs +++ b/OpenSim/Region/CoreModules/World/Warp3DMap/Warp3DImageModule.cs @@ -296,8 +296,8 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap int npointsx = (int)(regionsx / diff); int npointsy = (int)(regionsy / diff); - float invsx = 1.0f / (npointsx); - float invsy = 1.0f / (npointsy); + float invsx = 1.0f / (npointsx * diff); + float invsy = 1.0f / (npointsy * diff); npointsx++; npointsy++; @@ -387,9 +387,7 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap texture = new warp_Texture(image); warp_Material material = new warp_Material(texture); -// material.setReflectivity(50); renderer.Scene.addMaterial("TerrainColor", material); -// renderer.Scene.material("TerrainColor").setReflectivity(0); // reduces tile seams a bit thanks lkalif renderer.SetObjectMaterial("Terrain", "TerrainColor"); } @@ -775,32 +773,5 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap { return Utils.Lerp(Utils.Lerp(v00, v01, xPercent), Utils.Lerp(v10, v11, xPercent), yPercent); } - - /// - /// Performs a high quality image resize - /// - /// Image to resize - /// New width - /// New height - /// Resized image - public static Bitmap ResizeImageSolid(Image image, int width, int height) - { - Bitmap result = new Bitmap(width, height, PixelFormat.Format24bppRgb); - - using (ImageAttributes atrib = new ImageAttributes()) - using (Graphics graphics = Graphics.FromImage(result)) - { - atrib.SetWrapMode(System.Drawing.Drawing2D.WrapMode.TileFlipXY); - graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; - graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; - graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; - graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.None; - - graphics.DrawImage(image,new Rectangle(0,0, result.Width, result.Height), - 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, atrib); - } - - return result; - } } } diff --git a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs index 4b14c71..e899343 100644 --- a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs +++ b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs @@ -1427,8 +1427,9 @@ namespace OpenSim.Region.CoreModules.World.WorldMap Bitmap mapTexture = new Bitmap(spanX, spanY); ImageAttributes gatrib = new ImageAttributes(); - Graphics g = Graphics.FromImage(mapTexture); gatrib.SetWrapMode(System.Drawing.Drawing2D.WrapMode.TileFlipXY); + + Graphics g = Graphics.FromImage(mapTexture); g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; @@ -1687,11 +1688,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap if(mb > Constants.RegionSize && mb > 0) { float scale = (float)Constants.RegionSize/(float)mb; - Size newsize = new Size(); - newsize.Width = (int)(bx * scale); - newsize.Height = (int)(by * scale); - - using(Bitmap scaledbmp = new Bitmap(mapbmp,newsize)) + using(Bitmap scaledbmp = Util.ResizeImageSolid(mapbmp, (int)(bx * scale), (int)(by * scale))) data = OpenJPEG.EncodeFromImage(scaledbmp, false); } else -- cgit v1.1