using FastReport.Utils;
using System.Drawing;
using System.ComponentModel;

namespace FastReport.Gauge.Radial
{
#if !DEBUG
    [DesignTimeVisible(false)]
#endif
    class RadialLabel : GaugeLabel
    {
        public RadialLabel(GaugeObject parent): base(parent)
        {
            Parent = parent as RadialGauge;
        }

        public override void Assign(GaugeLabel src)
        {
            base.Assign(src);
        }

        public override void Serialize(FRWriter writer, string prefix, GaugeLabel diff)
        {
            base.Serialize(writer, prefix, diff);
        }

        public override void Draw(FRPaintEventArgs e)
        {
            if ((Parent as RadialGauge).Type == RadialGaugeType.Circle)
            {
                base.Draw(e);
                float x = (Parent.AbsLeft + Parent.Border.Width / 2) * e.ScaleX;
                float y = (Parent.AbsTop + Parent.Border.Width / 2) * e.ScaleY;
                float dx = (Parent.Width - Parent.Border.Width) * e.ScaleX - 1;
                float dy = (Parent.Height - Parent.Border.Width) * e.ScaleY - 1;

                PointF lblPt = new PointF(x + dx / 2, y + dy - ((Parent.Scale as RadialScale).AvrTick.Y - y));
                SizeF txtSize = RadialUtils.GetStringSize(e, Parent, Font, Text);
                Font font = RadialUtils.GetFont(e, Parent, Font);
                Brush brush = e.Cache.GetBrush(Color);
                e.Graphics.DrawString(Text, font, brush, lblPt.X - txtSize.Width / 2, lblPt.Y - txtSize.Height / 2);
            }
        }
    }
}
