From d1a324888be2a0db247999928dff12d0bb62cddd Mon Sep 17 00:00:00 2001 From: John Hurliman Date: Fri, 11 Jun 2010 15:37:25 -0700 Subject: * Added a new method to IMapImageGenerator for getting the map tile before it is JPEG2000 compressed * Aesthetically improved map tile water * SimianGrid connector now uploads a PNG tile to the AddMapTile API --- .../CoreModules/World/WorldMap/MapImageModule.cs | 50 +++++++++++----------- .../World/WorldMap/ShadedMapTileRenderer.cs | 5 ++- .../World/WorldMap/TexturedMapTileRenderer.cs | 5 ++- 3 files changed, 32 insertions(+), 28 deletions(-) (limited to 'OpenSim/Region/CoreModules/World') diff --git a/OpenSim/Region/CoreModules/World/WorldMap/MapImageModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/MapImageModule.cs index b71b5f6..b96d95a 100644 --- a/OpenSim/Region/CoreModules/World/WorldMap/MapImageModule.cs +++ b/OpenSim/Region/CoreModules/World/WorldMap/MapImageModule.cs @@ -70,10 +70,8 @@ namespace OpenSim.Region.CoreModules.World.WorldMap #region IMapImageGenerator Members - public byte[] WriteJpeg2000Image(string gradientmap) + public Bitmap CreateMapTile(string gradientmap) { - byte[] imageData = null; - bool drawPrimVolume = true; bool textureTerrain = false; @@ -98,32 +96,36 @@ namespace OpenSim.Region.CoreModules.World.WorldMap } terrainRenderer.Initialise(m_scene, m_config); - using (Bitmap mapbmp = new Bitmap((int)Constants.RegionSize, (int)Constants.RegionSize)) - { - //long t = System.Environment.TickCount; - //for (int i = 0; i < 10; ++i) { - terrainRenderer.TerrainToBitmap(mapbmp); - //} - //t = System.Environment.TickCount - t; - //m_log.InfoFormat("[MAPTILE] generation of 10 maptiles needed {0} ms", t); + Bitmap mapbmp = new Bitmap((int)Constants.RegionSize, (int)Constants.RegionSize, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + //long t = System.Environment.TickCount; + //for (int i = 0; i < 10; ++i) { + terrainRenderer.TerrainToBitmap(mapbmp); + //} + //t = System.Environment.TickCount - t; + //m_log.InfoFormat("[MAPTILE] generation of 10 maptiles needed {0} ms", t); - if (drawPrimVolume) - { - DrawObjectVolume(m_scene, mapbmp); - } + if (drawPrimVolume) + { + DrawObjectVolume(m_scene, mapbmp); + } - try - { - imageData = OpenJPEG.EncodeFromImage(mapbmp, true); - } - catch (Exception e) // LEGIT: Catching problems caused by OpenJPEG p/invoke - { - m_log.Error("Failed generating terrain map: " + e); - } + return mapbmp; + } + + public byte[] WriteJpeg2000Image(string gradientmap) + { + try + { + using (Bitmap mapbmp = CreateMapTile(gradientmap)) + return OpenJPEG.EncodeFromImage(mapbmp, true); + } + catch (Exception e) // LEGIT: Catching problems caused by OpenJPEG p/invoke + { + m_log.Error("Failed generating terrain map: " + e); } - return imageData; + return null; } #endregion diff --git a/OpenSim/Region/CoreModules/World/WorldMap/ShadedMapTileRenderer.cs b/OpenSim/Region/CoreModules/World/WorldMap/ShadedMapTileRenderer.cs index a297cf3..fef2ef3 100644 --- a/OpenSim/Region/CoreModules/World/WorldMap/ShadedMapTileRenderer.cs +++ b/OpenSim/Region/CoreModules/World/WorldMap/ShadedMapTileRenderer.cs @@ -37,6 +37,8 @@ namespace OpenSim.Region.CoreModules.World.WorldMap { public class ShadedMapTileRenderer : IMapTileTerrainRenderer { + private static readonly Color WATER_COLOR = Color.FromArgb(29, 71, 95); + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); @@ -221,8 +223,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap try { - Color water = Color.FromArgb((int)heightvalue, (int)heightvalue, 255); - mapbmp.SetPixel(x, yr, water); + mapbmp.SetPixel(x, yr, WATER_COLOR); } catch (ArgumentException) { diff --git a/OpenSim/Region/CoreModules/World/WorldMap/TexturedMapTileRenderer.cs b/OpenSim/Region/CoreModules/World/WorldMap/TexturedMapTileRenderer.cs index 4ecad74..8b34f6e 100644 --- a/OpenSim/Region/CoreModules/World/WorldMap/TexturedMapTileRenderer.cs +++ b/OpenSim/Region/CoreModules/World/WorldMap/TexturedMapTileRenderer.cs @@ -136,6 +136,8 @@ namespace OpenSim.Region.CoreModules.World.WorldMap private static readonly UUID defaultTerrainTexture4 = new UUID("53a2f406-4895-1d13-d541-d2e3b86bc19c"); private static readonly Color defaultColor4 = Color.FromArgb(200, 200, 200); + private static readonly Color WATER_COLOR = Color.FromArgb(29, 71, 95); + #endregion @@ -406,8 +408,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap heightvalue = 100f - (heightvalue * 100f) / 19f; // 0 - 19 => 100 - 0 - Color water = Color.FromArgb((int)heightvalue, (int)heightvalue, 255); - mapbmp.SetPixel(x, yr, water); + mapbmp.SetPixel(x, yr, WATER_COLOR); } } } -- cgit v1.1