[mapguide-commits] r6004 - in trunk/Tools/Maestro: Maestro.Editors/MapDefinition Maestro.Editors/SymbolDefinition/GraphicsEditors OSGeo.MapGuide.MaestroAPI/ObjectModels

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Tue Jul 26 08:44:43 EDT 2011


Author: jng
Date: 2011-07-26 05:44:43 -0700 (Tue, 26 Jul 2011)
New Revision: 6004

Modified:
   trunk/Tools/Maestro/Maestro.Editors/MapDefinition/FiniteScaleListCtrl.resx
   trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/GraphicsEditors/ImageDialog.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/SymbolDefinition.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/SymbolInterfaces.cs
Log:
#1749: Fix error adding new image to the graphics collection of a Simple Symbol Definition.


Modified: trunk/Tools/Maestro/Maestro.Editors/MapDefinition/FiniteScaleListCtrl.resx
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/MapDefinition/FiniteScaleListCtrl.resx	2011-07-26 12:16:09 UTC (rev 6003)
+++ trunk/Tools/Maestro/Maestro.Editors/MapDefinition/FiniteScaleListCtrl.resx	2011-07-26 12:44:43 UTC (rev 6004)
@@ -450,27 +450,6 @@
   <metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>3, 16</value>
   </metadata>
-  <data name="btnEditScalesManually.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
-    <value>Magenta</value>
-  </data>
-  <data name="btnEditScalesManually.Size" type="System.Drawing.Size, System.Drawing">
-    <value>23, 22</value>
-  </data>
-  <data name="btnEditScalesManually.ToolTipText" xml:space="preserve">
-    <value>Manually edit scales</value>
-  </data>
-  <data name="btnRemoveScale.Enabled" type="System.Boolean, mscorlib">
-    <value>False</value>
-  </data>
-  <data name="btnRemoveScale.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
-    <value>Magenta</value>
-  </data>
-  <data name="btnRemoveScale.Size" type="System.Drawing.Size, System.Drawing">
-    <value>23, 22</value>
-  </data>
-  <data name="btnRemoveScale.ToolTipText" xml:space="preserve">
-    <value>Remove selected scale</value>
-  </data>
   <data name="toolStrip1.Location" type="System.Drawing.Point, System.Drawing">
     <value>3, 16</value>
   </data>
@@ -519,6 +498,27 @@
   <data name="&gt;&gt;groupBox2.ZOrder" xml:space="preserve">
     <value>0</value>
   </data>
+  <data name="btnEditScalesManually.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
+    <value>Magenta</value>
+  </data>
+  <data name="btnEditScalesManually.Size" type="System.Drawing.Size, System.Drawing">
+    <value>23, 22</value>
+  </data>
+  <data name="btnEditScalesManually.ToolTipText" xml:space="preserve">
+    <value>Manually edit scales</value>
+  </data>
+  <data name="btnRemoveScale.Enabled" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name="btnRemoveScale.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
+    <value>Magenta</value>
+  </data>
+  <data name="btnRemoveScale.Size" type="System.Drawing.Size, System.Drawing">
+    <value>23, 22</value>
+  </data>
+  <data name="btnRemoveScale.ToolTipText" xml:space="preserve">
+    <value>Remove selected scale</value>
+  </data>
   <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>True</value>
   </metadata>

Modified: trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/GraphicsEditors/ImageDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/GraphicsEditors/ImageDialog.cs	2011-07-26 12:16:09 UTC (rev 6003)
+++ trunk/Tools/Maestro/Maestro.Editors/SymbolDefinition/GraphicsEditors/ImageDialog.cs	2011-07-26 12:44:43 UTC (rev 6004)
@@ -123,7 +123,11 @@
 
         private void txtImageBase64_TextChanged(object sender, EventArgs e)
         {
+            //HACK: Leaky Abstraction. The impl of IImageGraphic.Item returns a new instance
+            //So these are not the same reference
             _imageInline.Content = Convert.FromBase64String(txtImageBase64.Text);
+            if (_image.Item.Type == ImageType.Inline)
+                _image.Item = _imageInline;
         }
 
         private void lnkLoadImage_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
@@ -134,7 +138,11 @@
                 if (open.ShowDialog() == DialogResult.OK)
                 {
                     byte[] content = File.ReadAllBytes(open.FileName);
+                    //HACK: Leaky Abstraction. The impl of IImageGraphic.Item returns a new instance
+                    //So these are not the same reference
                     _imageInline.Content = content;
+                    if (_image.Item.Type == ImageType.Inline)
+                        _image.Item = _imageInline;
                     txtImageBase64.Text = Convert.ToBase64String(content);
                     txtImageBase64.Tag = content;
                 }

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/SymbolDefinition.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/SymbolDefinition.cs	2011-07-26 12:16:09 UTC (rev 6003)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/SymbolDefinition.cs	2011-07-26 12:44:43 UTC (rev 6004)
@@ -332,7 +332,11 @@
 
         public IImageGraphic CreateImageGraphics()
         {
-            return new Image() { };
+            //default to empty inline content
+            return new Image() 
+            { 
+                Item = new byte[0]
+            };
         }
 
         public IParameter CreateParameter()

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/SymbolInterfaces.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/SymbolInterfaces.cs	2011-07-26 12:16:09 UTC (rev 6003)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/SymbolInterfaces.cs	2011-07-26 12:44:43 UTC (rev 6004)
@@ -940,6 +940,17 @@
         /// <summary>
         /// Gets or sets the image content
         /// </summary>
+        /// <remarks>
+        /// If the object being returned is an inline image, the object is a fresh instance whose
+        /// byte array refers to the same instance. That is to say:
+        /// <code>
+        /// IInlineImage img1 = (IInlineImage)imageGraphic.Item;
+        /// IInlineImage img2 = (IInlineImage)imageGraphic.Item;
+        /// 
+        /// Object.ReferenceEquals(img1, img2);                 //false
+        /// Object.ReferenceEquals(img1.Content, img2.Content); //true
+        /// </code>
+        /// </remarks>
         IImageBase Item { get; set; }
 
         /// <summary>



More information about the mapguide-commits mailing list