diff --git a/src/Warp3DImageModule.cs b/src/Warp3DImageModule.cs index 213ac11..94d5652 100644 --- a/src/Warp3DImageModule.cs +++ b/src/Warp3DImageModule.cs @@ -82,7 +82,12 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap private String m_cacheDirectory = ""; private bool m_Enabled = false; -// private Bitmap lastImage = null; + private bool m_enable_date = false; + private bool m_enable_regionName = false; + private bool m_enable_regionPosition = false; + private bool m_enable_refreshEveryMonth = false; + + // private Bitmap lastImage = null; private DateTime lastImageTime = DateTime.MinValue; #region Region Module interface @@ -112,6 +117,12 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap m_cacheDirectory = Util.GetConfigVarFromSections(m_config, "CacheDirectory", configSections, System.IO.Path.Combine(new DirectoryInfo(".").FullName, "MapImageCache")); + + m_enable_date = Util.GetConfigVarFromSections(m_config, "enableDate", configSections, false); + m_enable_regionName = Util.GetConfigVarFromSections(m_config, "enableName", configSections, false); + m_enable_regionPosition = Util.GetConfigVarFromSections(m_config, "enablePosition", configSections, false); + m_enable_refreshEveryMonth = Util.GetConfigVarFromSections(m_config, "RefreshEveryMonth", configSections, true); + if (!Directory.Exists(m_cacheDirectory)) Directory.CreateDirectory(m_cacheDirectory); } @@ -185,18 +196,45 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap private void writeDateOnMap(ref Bitmap _map) { - RectangleF rectf = new RectangleF(5, 5, 200, 25); + RectangleF rectf = new RectangleF(2, 1, 200, 25); Graphics g = Graphics.FromImage(_map); g.SmoothingMode = SmoothingMode.AntiAlias; g.InterpolationMode = InterpolationMode.HighQualityBicubic; g.PixelOffsetMode = PixelOffsetMode.HighQuality; - g.DrawString(unixTimeToDateString(getCurrentUnixTime()), new Font("Arial", 12), Brushes.White, rectf); + g.DrawString(unixTimeToDateString(getCurrentUnixTime()), new Font("Arial", 8), Brushes.White, rectf); + g.Flush(); + } + + private void writeNameOnMap(ref Bitmap _map) + { + RectangleF rectf = new RectangleF(2, m_scene.RegionInfo.RegionSizeX - 15, 200, 25); + + Graphics g = Graphics.FromImage(_map); + g.SmoothingMode = SmoothingMode.AntiAlias; + g.InterpolationMode = InterpolationMode.HighQualityBicubic; + g.PixelOffsetMode = PixelOffsetMode.HighQuality; + g.DrawString(m_scene.Name, new Font("Arial", 8), Brushes.White, rectf); + g.Flush(); + } + + private void writePositionOnMap(ref Bitmap _map) + { + RectangleF rectf = new RectangleF(m_scene.RegionInfo.RegionSizeY - 75, m_scene.RegionInfo.RegionSizeX - 15, 80, 25); + + Graphics g = Graphics.FromImage(_map); + g.SmoothingMode = SmoothingMode.AntiAlias; + g.InterpolationMode = InterpolationMode.HighQualityBicubic; + g.PixelOffsetMode = PixelOffsetMode.HighQuality; + g.DrawString("<" + m_scene.RegionInfo.RegionLocX + " " + m_scene.RegionInfo.RegionLocY + ">", new Font("Arial", 8), Brushes.White, rectf); g.Flush(); } public Bitmap CreateMapTile() { + if ((File.GetCreationTime(System.IO.Path.Combine(m_cacheDirectory, m_scene.RegionInfo.RegionID + ".bmp")).Month != DateTime.Now.Month) && m_enable_refreshEveryMonth == true) + File.Delete(System.IO.Path.Combine(m_cacheDirectory, m_scene.RegionInfo.RegionID + ".bmp")); + if(File.Exists(System.IO.Path.Combine(m_cacheDirectory, m_scene.RegionInfo.RegionID + ".bmp"))) { return new Bitmap(System.IO.Path.Combine(m_cacheDirectory, m_scene.RegionInfo.RegionID + ".bmp")); @@ -226,10 +264,20 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap (float)m_scene.RegionInfo.RegionSizeX, (float)m_scene.RegionInfo.RegionSizeY); Bitmap tile = CreateMapTile(viewport, false); - writeDateOnMap(ref tile); + + if (m_enable_date) + writeDateOnMap(ref tile); + + if (m_enable_regionName) + writeNameOnMap(ref tile); + + if (m_enable_regionPosition) + writePositionOnMap(ref tile); + tile.Save(System.IO.Path.Combine(m_cacheDirectory, m_scene.RegionInfo.RegionID + ".bmp")); m_primMesher = null; return tile; + /* lastImage = tile; lastImageTime = DateTime.Now; @@ -453,8 +501,7 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap ); } - private void CreatePrim(WarpRenderer renderer, SceneObjectPart prim, - bool useTextures) + private void CreatePrim(WarpRenderer renderer, SceneObjectPart prim, bool useTextures) { const float MIN_SIZE_SQUARE = 4f;