public virtual void Paint(Pad pad, double xMin, double xMax, double yMin, double yMax)
{
var num1 = Pieces.Count > 0 ? Pieces.Cast<TPieItem>().Sum(item => item.Weight) : 0;
int num2 = pad.ClientX(0.0);
int num3 = pad.ClientY(100.0);
int num4 = Math.Abs(pad.ClientX(100.0) - pad.ClientX(0.0));
int num5 = Math.Abs(pad.ClientY(100.0) - pad.ClientY(0.0));
int num6 = 0;
int num7 = 0;
if (num4 > num5)
{
num6 = (num4 - num5) / 2;
num4 = num5;
}
else
{
num7 = (num5 - num4) / 2;
num5 = num4;
}
int num8 = num5 / 10;
// double num9 ;
double num10 = 0.0;
for (int index = 0; index < Pieces.Count; ++index)
{
double num11 = ((TPieItem)Pieces[index]).Weight / num1;
var brush = new SolidBrush(((TPieItem)Pieces[index]).Color);
double num12 = num10 + (double)Gap;
num10 += 360.0 * num11;
double num13 = num10 - num12 + 1.0;
pad.Graphics.FillPie(brush, num2 + num6 + num8, num3 + num7 + num8, num4 - 2 * num8, num5 - 2 * num8, (int)num12, (int)num13);
}
if (EnableContour)
{
// num9 = 0.0;
double num11 = 0.0;
for (int index = 0; index < Pieces.Count; ++index)
{
double num12 = ((TPieItem)Pieces[index]).Weight / num1;
Pen pen = new Pen(ContourColor);
double num13 = num11 + Gap;
num11 += 360.0 * num12;
double num14 = num11 - num13 + 1.0;
pad.Graphics.DrawPie(pen, (float)(num2 + num6 + num8), (float)(num3 + num7 + num8), (float)(num4 - 2 * num8), (float)(num5 - 2 * num8), (float)num13, (float)num14);
}
}
// num9 = 0.0;
double num15 = 0.0;
for (int index = 0; index < Pieces.Count; ++index)
{
double num11 = ((TPieItem)Pieces[index]).Weight / num1;
Pen pen = new Pen(ContourColor);
double num12 = num15 + Gap;
num15 += 360.0 * num11;
double num13 = num12 + (num15 - num12) / 2.0 + 90.0;
int num14 = (num4 - 2 * num8) / 4;
int num16 = (num4 - 2 * num8) / 2;
Math.Sin(Math.PI / 180.0 * num13);
int num17 = (num4 - 2 * num8) / 2;
Math.Cos(Math.PI / 180.0 * num13);
int num18 = (num4 - 2 * num8) / 2;
int num19 = (num4 - 2 * num8) / 2 + 10;
int x1 = (int)((double)(num2 + num6 + num8 + (num4 - 2 * num8) / 2) + (double)num18 * Math.Sin(Math.PI / 180.0 * num13));
int y1 = (int)((double)(num3 + num7 + num8 + (num4 - 2 * num8) / 2) - (double)num18 * Math.Cos(Math.PI / 180.0 * num13));
int num20 = (int)((double)(num2 + num6 + num8 + (num4 - 2 * num8) / 2) + (double)num19 * Math.Sin(Math.PI / 180.0 * num13));
int num21 = (int)((double)(num3 + num7 + num8 + (num4 - 2 * num8) / 2) - (double)num19 * Math.Cos(Math.PI / 180.0 * num13));
Font font = new Font("Arial", 8f);
pad.Graphics.DrawLine(new Pen(Color.Gray), x1, y1, num20, num21);
string str = ((TPieItem)Pieces[index]).Text.Replace("&%", (num11 * 100.0).ToString(Format));
if (num20 > num2 + num6 + num4 / 2)
{
pad.Graphics.DrawLine(new Pen(Color.Gray), num20, num21, num20 + 5, num21);
SizeF sizeF = pad.Graphics.MeasureString(str, font);
pad.Graphics.DrawString(str, font, (Brush)new SolidBrush(Color.Black), (float)(num20 + 5), (float)num21 - sizeF.Height / 2f);
}
else
{
pad.Graphics.DrawLine(new Pen(Color.Gray), num20, num21, num20 - 5, num21);
SizeF sizeF = pad.Graphics.MeasureString(str, font);
pad.Graphics.DrawString(str, font, (Brush)new SolidBrush(Color.Black), (float)(num20 - 5) - sizeF.Width, (float)num21 - sizeF.Height / 2f);
}
}
}