diff --git a/OpenSim/Region/CoreModules/Scripting/VectorRender/VectorRenderModule.cs b/OpenSim/Region/CoreModules/Scripting/VectorRender/VectorRenderModule.cs index 7cee0cfe53..2ef89b7ddc 100644 --- a/OpenSim/Region/CoreModules/Scripting/VectorRender/VectorRenderModule.cs +++ b/OpenSim/Region/CoreModules/Scripting/VectorRender/VectorRenderModule.cs @@ -229,6 +229,10 @@ namespace OpenSim.Region.CoreModules.Scripting.VectorRender alpha = temp; } } + // Allow a bitmap w/o the alpha component to be created + else if (value.ToLower() == "false") { + alpha = 256; + } break; case "bgcolour": int hex = 0; @@ -271,24 +275,36 @@ namespace OpenSim.Region.CoreModules.Scripting.VectorRender break; } } - - Bitmap bitmap = new Bitmap(width, height, PixelFormat.Format32bppArgb); + + Bitmap bitmap; + + if ( alpha == 256 ) + { + bitmap = new Bitmap(width, height, PixelFormat.Format32bppRgb); + } + else { + + bitmap = new Bitmap(width, height, PixelFormat.Format32bppArgb); + } Graphics graph = Graphics.FromImage(bitmap); // this is really just to save people filling the // background color in their scripts, only do when fully opaque - if (alpha == 255) + if (alpha >= 255) { graph.FillRectangle(new SolidBrush(bgColour), 0, 0, width, height); } for (int w = 0; w < bitmap.Width; w++) { - for (int h = 0; h < bitmap.Height; h++) - { - bitmap.SetPixel(w, h, Color.FromArgb(alpha, bitmap.GetPixel(w, h))); - } + if (alpha <= 255) + { + for (int h = 0; h < bitmap.Height; h++) + { + bitmap.SetPixel(w, h, Color.FromArgb(alpha, bitmap.GetPixel(w, h))); + } + } } GDIDraw(data, graph);