From c77e7fce9ebbdb0a7a5baee316fcf940bf641416 Mon Sep 17 00:00:00 2001 From: Adam Frisby Date: Thu, 9 Apr 2009 14:19:49 +0000 Subject: * Implements IGraphics interface for MRM Scripting. * This allows you to utilize System.Drawing tools on textures within the region. * Example: use System.Drawing.Bitmap to make your texture, then use Host.Graphics.SaveBitmap to make an asset from it in JPEG2K. You can edit (but not overwrite) existing textures using Host.Graphics.LoadBitmap. --- .../Scripting/Minimodule/Graphics.cs | 48 ++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/Graphics.cs (limited to 'OpenSim/Region/OptionalModules/Scripting/Minimodule/Graphics.cs') diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Graphics.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Graphics.cs new file mode 100644 index 0000000..4de249f --- /dev/null +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Graphics.cs @@ -0,0 +1,48 @@ +using System.Drawing; +using OpenMetaverse; +using OpenMetaverse.Imaging; +using OpenSim.Framework; +using OpenSim.Region.Framework.Scenes; + +namespace OpenSim.Region.OptionalModules.Scripting.Minimodule +{ + class Graphics : IGraphics + { + private readonly Scene m_scene; + + public Graphics(Scene m_scene) + { + this.m_scene = m_scene; + } + + public UUID SaveBitmap(Bitmap data) + { + return SaveBitmap(data, false, true); + } + + public UUID SaveBitmap(Bitmap data, bool lossless, bool temporary) + { + AssetBase asset = new AssetBase(); + asset.FullID = UUID.Random(); + asset.Data = OpenJPEG.EncodeFromImage(data, lossless); + asset.Name = "MRMDynamicImage" + Util.RandomClass.Next(1, 10000); + asset.Type = 0; + asset.Description = "MRM Image"; + asset.Local = false; + asset.Temporary = temporary; + m_scene.CommsManager.AssetCache.AddAsset(asset); + + return asset.FullID; + } + + public Bitmap LoadBitmap(UUID assetID) + { + AssetBase bmp = m_scene.CommsManager.AssetCache.GetAsset(assetID, true); + ManagedImage outimg; + Image img; + OpenJPEG.DecodeToImage(bmp.Data, out outimg, out img); + + return new Bitmap(img); + } + } +} -- cgit v1.1