using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace Canvas_Text
{
	/// <summary>
	/// Summary description for Form1.
	/// </summary>
	public class Form1 : System.Windows.Forms.Form
	{
		private System.Windows.Forms.Label label1;
		private System.Windows.Forms.Button button1;
		private C1.C1Flash.C1FlashCanvas c1FlashCanvas1;
		/// <summary>
		/// Required designer variable.
		/// </summary>
		private System.ComponentModel.Container components = null;

		public Form1()
		{
			//
			// Required for Windows Form Designer support
			//
			InitializeComponent();

			//
			// TODO: Add any constructor code after InitializeComponent call
			//
		}

		/// <summary>
		/// Clean up any resources being used.
		/// </summary>
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if (components != null) 
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}

		#region Windows Form Designer generated code
		/// <summary>
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent()
		{
			this.label1 = new System.Windows.Forms.Label();
			this.button1 = new System.Windows.Forms.Button();
			this.c1FlashCanvas1 = new C1.C1Flash.C1FlashCanvas();
			this.SuspendLayout();
			// 
			// label1
			// 
			this.label1.Location = new System.Drawing.Point(16, 16);
			this.label1.Name = "label1";
			this.label1.Size = new System.Drawing.Size(352, 56);
			this.label1.TabIndex = 0;
			this.label1.Text = "This sample demonstrates the methods of drawing text using the C1FlashCanvas clas" +
				"s.";
			// 
			// button1
			// 
			this.button1.Location = new System.Drawing.Point(104, 115);
			this.button1.Name = "button1";
			this.button1.Size = new System.Drawing.Size(168, 32);
			this.button1.TabIndex = 1;
			this.button1.Text = "Click here";
			this.button1.Click += new System.EventHandler(this.button1_Click);
			// 
			// Form1
			// 
			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
			this.ClientSize = new System.Drawing.Size(376, 190);
			this.Controls.AddRange(new System.Windows.Forms.Control[] {
																		  this.button1,
																		  this.label1});
			this.Name = "Form1";
			this.Text = "ComponentOne C1Flash Sample - Text";
			this.ResumeLayout(false);

		}
		#endregion

		/// <summary>
		/// The main entry point for the application.
		/// </summary>
		[STAThread]
		static void Main() 
		{
			Application.Run(new Form1());
		}

		private void LaunchViewer(string filename)
		{
			try
			{
				System.Diagnostics.Process.Start(filename);
			}
			catch (Exception e)
			{
				System.Diagnostics.Process.Start("IEXPLORE.EXE", filename);
			}
		}

		private string tempdir = System.IO.Path.GetDirectoryName(Application.ExecutablePath);

		private void button1_Click(object sender, System.EventArgs e)
		{
			this.c1FlashCanvas1.Clear(Color.White);

			// Normal, Bold, Italic text
			Font font = new Font("MS Sans Serif", 14);
			this.c1FlashCanvas1.DrawString("Text in normal", font, Brushes.DarkOrange, new PointF(20, 40));
			font.Dispose();

			font = new Font("MS Sans Serif", 14, FontStyle.Bold);
			this.c1FlashCanvas1.DrawString("Text in Bold", font, Brushes.DarkOrange, new PointF(20, 60));
			font.Dispose();

			font = new Font("MS Sans Serif", 14, FontStyle.Italic);
			this.c1FlashCanvas1.DrawString("Text in Italic", font, Brushes.DarkOrange, new PointF(20, 80));
			font.Dispose();

			// Left, Center, Right horizontal alignment
			font = new Font("MS Sans Serif", 14);
			Rectangle rect = new Rectangle(10, 120, 150, 25);
			this.c1FlashCanvas1.DrawRectangle(Pens.Black, rect);
			StringFormat sf = new StringFormat(StringFormatFlags.NoWrap);
			sf.Alignment = System.Drawing.StringAlignment.Far;
			this.c1FlashCanvas1.DrawString("Right alignment", font, Brushes.DarkOrange, rect, sf);

			rect.Offset(rect.Width + 30, 0);
			this.c1FlashCanvas1.DrawRectangle(Pens.Black, rect);
			sf.Alignment = System.Drawing.StringAlignment.Center;
			this.c1FlashCanvas1.DrawString("Center alignment", font, Brushes.DarkOrange, rect, sf);

			rect.Offset(rect.Width + 30, 0);
			this.c1FlashCanvas1.DrawRectangle(Pens.Black, rect);
			sf.Alignment = System.Drawing.StringAlignment.Near;
			this.c1FlashCanvas1.DrawString("Left alignment", font, Brushes.DarkOrange, rect, sf);
			font.Dispose();

			font = new Font("Tahoma", 14);
			rect = new Rectangle(10, 160,150,100);
			
			// draw string using default options (left-top alignment, no clipping)
			//string text = "This string is being rendered using the default options.";
			string text = "String with default options.";
			c1FlashCanvas1.DrawString(text, font, Brushes.Black, rect);
			c1FlashCanvas1.DrawRectangle(Pens.Black, rect);
			
			// create StringFormat to center align, both horizontal and vertical
			sf = new StringFormat(StringFormat.GenericDefault);
			sf.Alignment     =  StringAlignment.Center;
			sf.LineAlignment =  StringAlignment.Center;

			// render again using custom options
			rect.Offset(rect.Width + 30, 0);
			//text = "This string is being rendered using custom options.";
			text = "String with custom options.";
			c1FlashCanvas1.DrawString(text, font, Brushes.Black, rect, sf);
			c1FlashCanvas1.DrawRectangle(Pens.Black, rect);
			
			// change format to bottom align
			sf.LineAlignment =  StringAlignment.Far;

			// render again using custom options
			rect.Offset(rect.Width + 30, 0);
			c1FlashCanvas1.DrawString(text, font, Brushes.Black, rect, sf);
			c1FlashCanvas1.DrawRectangle(Pens.Black, rect);
			font.Dispose();

			font = new Font("Courier New", 46, FontStyle.Bold);
			this.c1FlashCanvas1.DrawString("Large Text", font, Brushes.LightBlue, new PointF(160, 40));
			font.Dispose();

			rect = new Rectangle(20, 280, this.c1FlashCanvas1.Width - 40, 220);
			font = new Font("Courier New", 14, FontStyle.Regular);
			string s = "ComponentOne was formed on July 1, 2000, by the merger of APEX Software Corporation and VideoSoft. Both APEX and VideoSoft have a history of leadership in the Microsoft Visual Studio component industry.";
			this.c1FlashCanvas1.DrawString(s, font, Brushes.DarkRed, rect);
			font.Dispose();

			this.c1FlashCanvas1.RenderToFile(tempdir + @"\c1flash_canvas_text.swf");
			LaunchViewer(tempdir + @"\c1flash_canvas_text.swf");
		}
	}
}
