2007-04-05 Jonathan Pobst <monkey@jpobst.com>
authorJonathan Pobst <monkey@jpobst.com>
Thu, 5 Apr 2007 19:57:44 +0000 (19:57 -0000)
committerJonathan Pobst <monkey@jpobst.com>
Thu, 5 Apr 2007 19:57:44 +0000 (19:57 -0000)
* ToolStripRenderer.cs: Add static method to mirror image.
* ToolStripProfessionalRenderer.cs: Support ImageTransparentColor
and RightToLeftAutoMirrorImage.
* ToolStripItem.cs: Remove MonoTODO from ImageTransparentColor.

svn path=/trunk/mcs/; revision=75456

mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripItem.cs
mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripProfessionalRenderer.cs
mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripRenderer.cs

index 9af2f68db06c1f0e10fb107b1dbc40fcdfeedf6c..7f3dafe69a35494e69954f875067889cd35652a5 100644 (file)
@@ -1,3 +1,10 @@
+2007-04-05  Jonathan Pobst  <monkey@jpobst.com>
+
+       * ToolStripRenderer.cs: Add static method to mirror image.
+       * ToolStripProfessionalRenderer.cs: Support ImageTransparentColor
+       and RightToLeftAutoMirrorImage.
+       * ToolStripItem.cs: Remove MonoTODO from ImageTransparentColor.
+
 2007-04-05  Jonathan Pobst  <monkey@jpobst.com>
 
        * ToolStripSplitStackLayout.cs: Support Alignment property.
index 197c36362f187a22c8fd5a33945dcb94106e48f9..48cb784c007197ab2e5ed86bc972bf4f96272825 100644 (file)
@@ -510,7 +510,6 @@ namespace System.Windows.Forms
                }
 
                [Localizable (true)]
-               [MonoTODO ("Stub, doesn't actually do anything yet.")]
                public Color ImageTransparentColor {
                        get { return this.image_transparent_color; }
                        set { this.image_transparent_color = value; }
index 2aaa7ecbe71a05c56862dd18ebdcca9be191205c..54e7cf0486ac53b61ff6630c986e401317bfcd4e 100644 (file)
@@ -30,6 +30,7 @@
 using System;
 using System.Drawing;
 using System.Drawing.Drawing2D;
+using System.Drawing.Imaging;
 
 namespace System.Windows.Forms
 {
@@ -235,7 +236,26 @@ namespace System.Windows.Forms
                {
                        base.OnRenderItemImage (e);
 
-                       e.Graphics.DrawImage (e.Image, e.ImageRectangle);
+                       bool need_dispose = false;
+                       Image i = e.Image;
+                       
+                       if (e.Item.RightToLeft == RightToLeft.Yes && e.Item.RightToLeftAutoMirrorImage == true) {
+                               i = CreateMirrorImage (i);
+                               need_dispose = true;
+                       }
+                               
+                       
+                       if (e.Item.ImageTransparentColor != Color.Empty) {
+                               ImageAttributes ia = new ImageAttributes ();
+                               ia.SetColorKey (e.Item.ImageTransparentColor, e.Item.ImageTransparentColor);
+                               e.Graphics.DrawImage (i, e.ImageRectangle, 0, 0, i.Width, i.Height, GraphicsUnit.Pixel, ia);
+                               ia.Dispose ();
+                       }
+                       else
+                               e.Graphics.DrawImage (i, e.ImageRectangle);
+                       
+                       if (need_dispose)
+                               i.Dispose ();
                }
 
                protected override void OnRenderItemText (ToolStripItemTextRenderEventArgs e)
index 91c3622d747554f4b0c017c4c682e23142580c28..443917b3d1aaec3f5b0b9bb7b7be1e0a5a7717ab 100644 (file)
@@ -71,6 +71,17 @@ namespace System.Windows.Forms
                        return b;
                }
 
+               public static Image CreateMirrorImage (Image normalImage)
+               {
+                       if (normalImage == null)
+                               return null;
+                               
+                       Bitmap b = new Bitmap (normalImage);
+                       b.RotateFlip (RotateFlipType.RotateNoneFlipX);
+                       
+                       return b;
+               }
+               
                public void DrawArrow (ToolStripArrowRenderEventArgs e)
                { this.OnRenderArrow (e); }