using System;
using System.Collections.Generic;
using System.Text;
using FastReport.DataVisualization.Charting;
using System.IO;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Imaging;
using System.ComponentModel;
using System.Drawing.Design;
using System.Collections;
using FastReport;
using FastReport.Utils;
using FastReport.Data;
using FastReport.TypeEditors;
using System.Drawing.Drawing2D;
namespace FastReport.MSChart
{
partial class MSChartObject : IHasEditor
{
#region Properties
///
/// This property is not relevant to this class.
///
[Browsable(false)]
public override Border Border
{
get { return base.Border; }
set { base.Border = value; }
}
///
/// This property is not relevant to this class.
///
[Browsable(false)]
public override FillBase Fill
{
get { return base.Fill; }
set { base.Fill = value; }
}
///
/// This property is not relevant to this class.
///
[Browsable(false)]
public new string Style
{
get { return base.Style; }
set { base.Style = value; }
}
///
/// This property is not relevant to this class.
///
[Browsable(false)]
public new string EvenStyle
{
get { return base.EvenStyle; }
set { base.EvenStyle = value; }
}
///
/// This property is not relevant to this class.
///
[Browsable(false)]
public new string HoverStyle
{
get { return base.HoverStyle; }
set { base.HoverStyle = value; }
}
#endregion
#region Public Methods
///
public override SizeF GetPreferredSize()
{
if ((Page as ReportPage).IsImperialUnitsUsed)
return new SizeF(Units.Inches * 3, Units.Inches * 2);
return new SizeF(Units.Millimeters * 80, Units.Millimeters * 50);
}
///
public override void OnBeforeInsert(int flags)
{
base.OnBeforeInsert(flags);
MSChartSeries series = AddSeries(SeriesChartType.Column);
series.CreateDummyData();
}
///
public override void OnAfterInsert(InsertFrom source)
{
base.OnAfterInsert(source);
if (source == InsertFrom.NewObject)
Series[0].CreateUniqueName();
}
///
public bool InvokeEditor()
{
using (MSChartObjectEditorForm form = new MSChartObjectEditorForm())
{
form.ChartObject = this;
return form.ShowDialog() == DialogResult.OK;
}
}
///
public override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
if (Hyperlink.Kind == HyperlinkKind.DetailPage || Hyperlink.Kind == HyperlinkKind.DetailReport)
{
float m = DrawUtils.ScreenDpi / 96f;
Chart.Size = new Size((int)(Width * m), (int)(Height * m));
HitTestResult hitTest = Chart.HitTest((int)(e.X * m), (int)(e.Y * m));
if (hitTest.ChartElementType == ChartElementType.DataPoint)
{
HotPoint = hitTest.Series.Points[hitTest.PointIndex];
Hyperlink.Value = HotPoint.AxisLabel;
Cursor = Cursors.Hand;
}
else
{
HotPoint = null;
Hyperlink.Value = "";
Cursor = Cursors.Default;
}
}
}
///
public override void OnMouseLeave(EventArgs e)
{
base.OnMouseLeave(e);
HotPoint = null;
}
#endregion
}
partial class SparklineObject
{
///
public override SizeF GetPreferredSize()
{
if (Page is ReportPage && (Page as ReportPage).IsImperialUnitsUsed)
return new SizeF(Units.Inches * 1, Units.Inches * 0.2f);
return new SizeF(Units.Millimeters * 25, Units.Millimeters * 5);
}
///
public override void OnBeforeInsert(int flags)
{
MSChartSeries series = AddSeries(SeriesChartType.FastLine);
series.CreateDummyData();
Chart.BorderSkin.SkinStyle = BorderSkinStyle.None;
Chart.BorderlineDashStyle = ChartDashStyle.NotSet;
Chart.ChartAreas[0].AxisX.Enabled = AxisEnabled.False;
Chart.ChartAreas[0].AxisY.Enabled = AxisEnabled.False;
Chart.Legends[0].Enabled = false;
}
}
}