From abaaaf8a12e28e439ca8bae522c7b07987f7f3f6 Mon Sep 17 00:00:00 2001
From: Peter Forstmeier <peter.forstmeier@t-online.de>
Date: Sun, 21 Jun 2015 17:22:47 +0200
Subject: [PATCH] WpfVisitor can Display Image

---
 .../src/DesignableItems/BaseImageItem.cs      |  1 -
 .../src/Designer/ImageDesigner.cs             |  1 -
 .../ICSharpCode.Reporting.csproj              |  3 +
 .../Src/Exporter/Visitors/AbstractVisitor.cs  |  4 +
 .../Src/Exporter/Visitors/IVisitor.cs         |  1 +
 .../Src/Factories/ExportColumnFactory.cs      |  5 +-
 .../Src/Items/BaseRowItem.cs                  | 18 +++--
 .../Src/Items/BaseTextItem.cs                 | 25 +++----
 .../Src/Items/ExportExtension.cs              | 30 ++++++++
 .../Src/Items/Graphics/BaseImageItem.cs       | 73 +++++++++++++++++++
 .../Src/Items/PrintableItem.cs                | 11 ++-
 .../Src/Items/ReportContainer.cs              | 19 +++--
 .../Src/Items/ReportSettings.cs               | 44 ++++-------
 .../Converter/ContainerConverter.cs           |  6 +-
 .../PageBuilder/ExportColumns/ExportColumn.cs | 11 ++-
 .../PageBuilder/ExportColumns/ExportImage.cs  | 34 +++++++++
 .../PageBuilder/ExportColumns/ExportText.cs   |  1 +
 .../Src/Wpf/Visitor/WpfVisitor.cs             | 33 +++++++++
 18 files changed, 236 insertions(+), 84 deletions(-)
 create mode 100644 src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ExportExtension.cs
 create mode 100644 src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/Graphics/BaseImageItem.cs
 create mode 100644 src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportImage.cs

diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignableItems/BaseImageItem.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignableItems/BaseImageItem.cs
index 141668d1bd..324f9d3784 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignableItems/BaseImageItem.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignableItems/BaseImageItem.cs
@@ -12,7 +12,6 @@ using System.ComponentModel;
 using System.Drawing;
 using System.Xml.Serialization;
 
-using ICSharpCode.Reporting.Addin.Globals;
 using ICSharpCode.Reports.Addin.TypeProviders;
 namespace ICSharpCode.Reporting.Addin.DesignableItems
 {
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Designer/ImageDesigner.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Designer/ImageDesigner.cs
index e93957d89f..49167158a4 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Designer/ImageDesigner.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Designer/ImageDesigner.cs
@@ -10,7 +10,6 @@ using System;
 using System.ComponentModel;
 using System.ComponentModel.Design;
 using System.Windows.Forms.Design;
-using ICSharpCode.Reporting.Addin.Globals;
 using ICSharpCode.Reporting.Addin.TypeProvider;
 
 namespace ICSharpCode.Reporting.Addin.Designer
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj
index 1bc4c69e47..6025b6c10a 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj
@@ -147,8 +147,10 @@
     <Compile Include="Src\Globals\GlobalValues.cs" />
     <Compile Include="Src\Interfaces\IReportModel.cs" />
     <Compile Include="Src\Items\BaseTextItem.cs" />
+    <Compile Include="Src\Items\ExportExtension.cs" />
     <Compile Include="Src\Items\Graphics\BaseCircleItem.cs" />
     <Compile Include="Src\Items\Graphics\BaseGraphics.cs" />
+    <Compile Include="Src\Items\Graphics\BaseImageItem.cs" />
     <Compile Include="Src\Items\Graphics\BaseLineItem.cs" />
     <Compile Include="Src\Items\Graphics\BaseRectangleItem.cs" />
     <Compile Include="Src\Items\GroupColumn.cs" />
@@ -164,6 +166,7 @@
     <Compile Include="Src\PageBuilder\ExportColumns\ExportCircle.cs" />
     <Compile Include="Src\PageBuilder\ExportColumns\ExportColumn.cs" />
     <Compile Include="Src\PageBuilder\ExportColumns\ExportContainer.cs" />
+    <Compile Include="Src\PageBuilder\ExportColumns\ExportImage.cs" />
     <Compile Include="Src\PageBuilder\ExportColumns\ExportLine.cs" />
     <Compile Include="Src\PageBuilder\ExportColumns\ExportRectangle.cs" />
     <Compile Include="Src\PageBuilder\ExportColumns\ExportRow.cs" />
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/AbstractVisitor.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/AbstractVisitor.cs
index 5dc7646d62..d6adb5c0f3 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/AbstractVisitor.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/AbstractVisitor.cs
@@ -66,6 +66,10 @@ namespace ICSharpCode.Reporting.Exporter.Visitors
 			
 		}
 		
+		public virtual void Visit (ExportImage exportImage) {
+			
+		}
+		
 		public virtual void Visit(ExportLine exportGraphics){
 		}
 		
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/IVisitor.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/IVisitor.cs
index 1da0365574..10135f66b2 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/IVisitor.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/IVisitor.cs
@@ -29,5 +29,6 @@ namespace ICSharpCode.Reporting.Exporter.Visitors
 		void Visit(ExportLine exportGraphics);
 		void Visit (ExportRectangle exportRectangle);
 		void Visit (ExportCircle exportCircle);
+		void Visit (ExportImage exportImage);
 	}
 }
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/ExportColumnFactory.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/ExportColumnFactory.cs
index 30b4f34422..bede3ebe95 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/ExportColumnFactory.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Factories/ExportColumnFactory.cs
@@ -25,9 +25,8 @@ namespace ICSharpCode.Reporting.Factories
 	/// <summary>
 	/// Description of ExportColumnFactory.
 	/// </summary>
-	class ExportColumnFactory
-	{
-		
+	static class ExportColumnFactory{
+	
 		public static IExportColumn CreateItem (IPrintableObject item) {
 			var export = item.CreateExportColumn();
 			return export;
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseRowItem.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseRowItem.cs
index d589485bed..49240ed51e 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseRowItem.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseRowItem.cs
@@ -31,14 +31,16 @@ namespace ICSharpCode.Reporting.Items
 		
 		public override IExportColumn CreateExportColumn()
 		{
-			var er = new ExportRow(){
-				Name = this.Name,
-				Size = this.Size,
-				Location = this.Location,
-				CanGrow = this.CanGrow,
-				BackColor = this.BackColor,
-				DesiredSize = this.Size
-			};
+			var er = new ExportRow();
+			er.ToExportItem(this);
+//			var er = new ExportRow(){
+//				Name = this.Name,
+//				Size = this.Size,
+//				Location = this.Location,
+//				CanGrow = this.CanGrow,
+//				BackColor = this.BackColor,
+//				DesiredSize = this.Size
+//			};
 			return er;
 		}
 	}
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseTextItem.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseTextItem.cs
index beeb3f39c3..b1431549c3 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseTextItem.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseTextItem.cs
@@ -80,22 +80,15 @@ namespace ICSharpCode.Reporting.Items
 		
 		public override  IExportColumn CreateExportColumn()
 		{
-			var ex = new ExportText();
-			ex.Name = Name;
-			ex.Location = Location;
-			ex.ForeColor = ForeColor;
-			ex.BackColor = BackColor;
-			ex.FrameColor = FrameColor;
-			ex.Size = Size;
-			ex.Font = Font;
-			ex.Text = Text;
-			ex.FormatString = FormatString;
-			ex.ContentAlignment = ContentAlignment;
-			ex.TextAlignment = TextAlignment;
-			ex.DataType = DataType;
-			ex.CanGrow = CanGrow;
-			ex.DrawBorder = DrawBorder;
-			return ex;
+			var export = new ExportText();
+			export.ToExportItem(this);
+			export.Font = Font;
+			export.Text = Text;
+			export.FormatString = FormatString;
+			export.ContentAlignment = ContentAlignment;
+			export.TextAlignment = TextAlignment;
+			export.DataType = DataType;
+			return export;
 		}	
 	}
 }
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ExportExtension.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ExportExtension.cs
new file mode 100644
index 0000000000..0b5725b66d
--- /dev/null
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ExportExtension.cs
@@ -0,0 +1,30 @@
+/*
+ * Created by SharpDevelop.
+ * User: Peter Forstmeier
+ * Date: 21.06.2015
+ * Time: 17:01
+ * 
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+using System;
+using ICSharpCode.Reporting.PageBuilder.ExportColumns;
+
+namespace ICSharpCode.Reporting.Items
+{
+	/// <summary>
+	/// Description of ExportExtension.
+	/// </summary>
+	public static class ExportExtension
+	{
+		public static void ToExportItem (this ExportColumn export, PrintableItem item) {
+			export.Name = item.Name;
+			export.Location = item.Location;
+			export.Size = item.Size;
+			export.ForeColor = item.ForeColor;
+			export.FrameColor = item.FrameColor;
+			export.BackColor = item.BackColor;
+			export.CanGrow = item.CanGrow;
+			export.DrawBorder = item.DrawBorder;
+		}	
+	}
+}
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/Graphics/BaseImageItem.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/Graphics/BaseImageItem.cs
new file mode 100644
index 0000000000..3742296506
--- /dev/null
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/Graphics/BaseImageItem.cs
@@ -0,0 +1,73 @@
+/*
+ * Created by SharpDevelop.
+ * User: Peter Forstmeier
+ * Date: 21.06.2015
+ * Time: 11:54
+ * 
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+using System;
+using System.Drawing;
+using ICSharpCode.Reporting.Interfaces.Export;
+using ICSharpCode.Reporting.PageBuilder.ExportColumns;
+
+namespace ICSharpCode.Reporting.Items
+{
+	/// <summary>
+	/// Description of BaseImageItem.
+	/// </summary>
+	public class BaseImageItem:PrintableItem
+	{
+		Image image;
+		
+		public BaseImageItem()
+		{
+		}
+		
+		#region IExportColumnBuilder  implementation
+		
+		public override IExportColumn CreateExportColumn(){
+			var export = new ExportImage();
+			export.ToExportItem(this);
+			
+			export.Image = Image;
+			export.ScaleImageToSize = ScaleImageToSize;
+			return export;
+		}
+
+		#endregion
+		
+		static Bitmap FakeImage(Size size, string text){
+		
+			var b = new Bitmap (size.Width,size.Height);
+			using (Graphics g = Graphics.FromImage (b)){
+				g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
+				g.DrawRectangle (new Pen(Color.Black, 1),
+				                 1,1,size.Width -2,size.Height -2);
+				
+				g.DrawString(text,new Font("Microsoft Sans Serif",
+				                           16,
+				                           FontStyle.Regular,
+				                           GraphicsUnit.Point),
+				             new SolidBrush(Color.Gray),
+				             new RectangleF(2,2,size.Width,size.Height) );
+			}
+			return b;
+		}
+		
+		
+		public Image Image {
+			get {
+				string text = "<Dummy Design Image>";
+				this.image = FakeImage(Size, text);
+				return this.image;
+			}
+			
+			set {
+				this.image = value;
+			}
+		}
+		
+		public bool ScaleImageToSize {get;set;}
+	}
+}
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/PrintableItem.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/PrintableItem.cs
index 4be5b87cf5..f0875a9898 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/PrintableItem.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/PrintableItem.cs
@@ -18,7 +18,6 @@
 
 using System;
 using System.Drawing;
-using ICSharpCode.Reporting.Globals;
 using ICSharpCode.Reporting.Interfaces;
 using ICSharpCode.Reporting.Interfaces.Export;
 
@@ -39,11 +38,6 @@ namespace ICSharpCode.Reporting.Items
 		public Size Size { get; set; }
 
 		
-		public virtual IExportColumn CreateExportColumn()
-		{
-			return null;
-		}
-		
 		public Color ForeColor {get;set;}
 			
 		public Color BackColor {get;set;}
@@ -54,5 +48,10 @@ namespace ICSharpCode.Reporting.Items
 		
 		public bool DrawBorder {get;set;}
 		
+		
+		public virtual IExportColumn CreateExportColumn(){
+			return null;
+		}
+		
 	}
 }
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportContainer.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportContainer.cs
index 127522cee3..e3c4ced02c 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportContainer.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportContainer.cs
@@ -44,14 +44,17 @@ namespace ICSharpCode.Reporting.Items
 		
 		public override IExportColumn CreateExportColumn()
 		{
-			return new ExportContainer(){
-			Name = this.Name,
-			Size = this.Size,
-			Location = this.Location,
-			CanGrow = this.CanGrow,
-			BackColor = this.BackColor,
-			DesiredSize = this.Size
-			};
+			var export = new ExportContainer();
+			export.ToExportItem(this);
+			return export;
+//			return new ExportContainer(){
+//			Name = this.Name,
+//			Size = this.Size,
+//			Location = this.Location,
+//			CanGrow = this.CanGrow,
+//			BackColor = this.BackColor,
+//			DesiredSize = this.Size
+//			};
 		}
 	}
 }
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportSettings.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportSettings.cs
index b0b6c927a1..6e7bdca34b 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportSettings.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/ReportSettings.cs
@@ -20,7 +20,6 @@ using System;
 using System.ComponentModel;
 using System.Drawing;
 using System.IO;
-using System.Xml.Serialization;
 using ICSharpCode.Reporting.Globals;
 using ICSharpCode.Reporting.Interfaces;
 
@@ -46,9 +45,7 @@ namespace ICSharpCode.Reporting.Items
 		}
 		
 		
-		void BaseValues()
-		{
-			
+		void BaseValues(){
 //			this.UseStandardPrinter = true;
 //			this.GraphicsUnit = GraphicsUnit.Pixel;
 //			this.Padding = new Padding(5);
@@ -80,10 +77,9 @@ namespace ICSharpCode.Reporting.Items
 		
 		string reportName;
 		
-		[Category("Base Settings")]
-		[DefaultValueAttribute ("")]
-		public string ReportName
-		{
+//		[Category("Base Settings")]
+//		[DefaultValueAttribute ("")]
+		public string ReportName{
 			get {
 				if (string.IsNullOrEmpty(reportName)) {
 					reportName = GlobalValues.DefaultReportName;
@@ -97,10 +93,9 @@ namespace ICSharpCode.Reporting.Items
 		
 		string fileName;
 		
-		[Category("Base Settings")]
-		[XmlIgnoreAttribute]
-		public string FileName
-		{
+//		[Category("Base Settings")]
+//		[XmlIgnoreAttribute]
+		public string FileName{
 			get {
 				if (String.IsNullOrEmpty(fileName)) {
 					fileName = GlobalValues.PlainFileName;
@@ -112,40 +107,35 @@ namespace ICSharpCode.Reporting.Items
 			}
 		}
 		
-//		
-//		[Browsable(true), Category("Base Settings")]
-//		public ReportType ReportType {get;set;}
-//		
-		
+
 		[Browsable(true), Category("Base Settings")]
 		public PushPullModel DataModel {get;set;}
 		
 		#endregion
 		
-		
 		#region Pagesettings
 		
-		[Category("Page Settings")]
+//		[Category("Page Settings")]
 		public int BottomMargin {get;set;}
 			
 		
-		[Category("Page Settings")]
+//		[Category("Page Settings")]
 		public int TopMargin  {get;set;}
 		
 		
 		
-		[Category("Page Settings")]
+//		[Category("Page Settings")]
 		public int LeftMargin {get;set;}
 		
 		
 		
-		[Category("Page Settings")]
+//		[Category("Page Settings")]
 		public int RightMargin  {get;set;}
 			
 		
 		Size pageSize;
 		
-		[Category("Page Settings")]
+//		[Category("Page Settings")]
 		public Size PageSize {
 			get {
 				return !Landscape ? pageSize : new Size(pageSize.Height, pageSize.Width);
@@ -154,7 +144,7 @@ namespace ICSharpCode.Reporting.Items
 		}
 		
 		
-		[Category("Page Settings")]
+//		[Category("Page Settings")]
 		public bool Landscape {get;set;}
 		
 		
@@ -162,12 +152,6 @@ namespace ICSharpCode.Reporting.Items
 		
 		#region
 		
-//		[Category("Data")]
-		
-//		[Category("Parameters")]
-//		[EditorAttribute ( typeof(ParameterCollectionEditor),
-//		                  typeof(System.Drawing.Design.UITypeEditor) )]
-		
 		public ParameterCollection ParameterCollection {get; private set;}
 	
 		public SortColumnCollection SortColumnsCollection {get;private set;}
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs
index 27c203c6b8..382e8c371f 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs
@@ -48,11 +48,7 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter
 		
 		public List<IExportColumn> CreateConvertedList(List<IPrintableObject> items){                                    
 			var itemsList = new List<IExportColumn>();
-//			var aa = items.OrderBy(x => x.Location.Y);
-//			foreach (var el in aa) {
-//				Console.WriteLine("{0} - {1}",el.Name,el.Location);
-//			}
-//			foreach (var element in aa) {
+
 			foreach (var element in items) {
 				var exportColumn = ExportColumnFactory.CreateItem(element);
 				var ec = element as IReportContainer;
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs
index e0911e4684..62f0384ba8 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs
@@ -34,18 +34,12 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
 			BackColor = Color.White;
 		}
 		
-		
 		public string Name {get;set;}
 		
 		public Size Size {get;set;}
 		
 		public Point Location {get;set;}
 		
-		public virtual IArrangeStrategy GetArrangeStrategy ()
-		{
-			return null;
-		}
-		
 		public Size DesiredSize {get;set;}
 		
 		public Color ForeColor {get;set;}
@@ -66,6 +60,11 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
 			}
 		}
 		
+		public virtual IArrangeStrategy GetArrangeStrategy ()
+		{
+			return null;
+		}
+		
 		public virtual IMeasurementStrategy MeasurementStrategy()
 		{
 			throw new NotImplementedException();
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportImage.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportImage.cs
new file mode 100644
index 0000000000..909a13f508
--- /dev/null
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportImage.cs
@@ -0,0 +1,34 @@
+/*
+ * Created by SharpDevelop.
+ * User: Peter Forstmeier
+ * Date: 21.06.2015
+ * Time: 11:57
+ * 
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+using System;
+using System.Drawing;
+using ICSharpCode.Reporting.Exporter.Visitors;
+
+namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
+{
+	/// <summary>
+	/// Description of ExportImage.
+	/// </summary>
+	public class ExportImage:ExportColumn,IAcceptor
+	{
+		public ExportImage()
+		{
+		}
+
+		#region IAcceptor implementation
+		public void Accept(IVisitor visitor){
+			visitor.Visit(this);
+		}
+		#endregion
+		
+		public Image Image {get;set;}
+		
+		public bool ScaleImageToSize {get;set;}
+	}
+}
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportText.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportText.cs
index 1b9d89c9f5..459f016175 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportText.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportText.cs
@@ -47,6 +47,7 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
 		{
 		}
 		
+		
 		public void Accept(IVisitor visitor)
 		{
 			visitor.Visit(this);
diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/WpfVisitor.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/WpfVisitor.cs
index 9bff455041..ec02ac9c33 100644
--- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/WpfVisitor.cs
+++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/WpfVisitor.cs
@@ -18,11 +18,14 @@
 
 using System;
 using System.Collections.Generic;
+using System.Drawing.Imaging;
+using System.IO;
 using System.Windows;
 using System.Windows.Controls;
 using System.Windows.Documents;
 using System.Windows.Media;
 
+using System.Windows.Media.Imaging;
 using ICSharpCode.Reporting.BaseClasses;
 using ICSharpCode.Reporting.Exporter.Visitors;
 using ICSharpCode.Reporting.Interfaces.Export;
@@ -146,6 +149,36 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor
 		}
 
 		
+		public override void Visit(ExportImage exportImage)
+		{
+			var visual = new DrawingVisual();
+			using (var dc = visual.RenderOpen()){
+				var iss = ToBitmapSource(exportImage.Image);
+				
+				dc.DrawImage(iss,new Rect(exportImage.Location.ToWpf(),
+				                          new Size(exportImage.DesiredSize.Width,exportImage.DesiredSize.Height)));
+			}
+			var drawingElement = new DrawingElement(visual);
+			UIElement = drawingElement;
+		}
+		
+		
+		static BitmapSource ToBitmapSource(System.Drawing.Image source){
+			using (MemoryStream stream = new MemoryStream()) {
+				source.Save(stream, ImageFormat.Bmp);
+
+				stream.Position = 0;
+				BitmapImage result = new BitmapImage();
+				result.BeginInit();
+				
+				result.CacheOption = BitmapCacheOption.OnLoad;
+				result.StreamSource = stream;
+				result.EndInit();
+				result.Freeze();
+				return result;
+			}
+		}
+
 		public override void Visit(ExportLine exportLine){
 		
 			var pen = FixedDocumentCreator.CreateWpfPen(exportLine);