package com.guru.component.drawingPad 
{
	import flash.display.BitmapData;
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	/**
	 * ...
	 * @author Eddy Lee
	 */
	public class DrawingPad
	{
		private var mDrawArea_mc:MovieClip;
		private var mSpacer_mc:MovieClip;
		private var mTimeline_mc:MovieClip;
		private var mBMPData:BitmapData;
		
		public function DrawingPad(pTimeline_mc:MovieClip)
		{
			mTimeline_mc = pTimeline_mc;
			mSpacer_mc = mTimeline_mc.spacer_mc;
			mDrawArea_mc = mTimeline_mc.drawArea_mc;
		}
		
		public function startDrawing():void
		{
			mSpacer_mc.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
			mSpacer_mc.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
		}
		
		public function stopDrawing():void
		{
			mSpacer_mc.removeEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
			mSpacer_mc.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp);
		}
		
		public function getVertScale():Number
		{
			return mSpacer_mc.height / 100;
		}
		
		public function getHoriScale():Number
		{
			return mSpacer_mc.width / 100;
		}
		
		public function getBMPData():BitmapData
		{
			if (mBMPData != null)
			{
				mBMPData.dispose();	
				mBMPData = null;
			}
			
			mBMPData = new BitmapData(mSpacer_mc.width, mSpacer_mc.height, true, 0xFFFFFFFF);
			mBMPData.draw(mTimeline_mc);
			//mBMPData.draw(mDrawArea_mc);
			return mBMPData;
		}
		
		public function dispose():void
		{
			mSpacer_mc.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
			this.stopDrawing();
			
			mBMPData.dispose();
		}
		
		public function clearAll():void
		{
			while (mDrawArea_mc.numChildren > 0)
			{
				mDrawArea_mc.removeChildAt(0);
			}
		}
		
		private function onMouseMove(e:MouseEvent):void
		{
			var square:Sprite = new Sprite();
			square.mouseEnabled = false;
			square.mouseChildren = false;
			mDrawArea_mc.addChild(square);
			square.graphics.lineStyle(3,0x00ff00);
			square.graphics.beginFill(0x0000FF);
			square.graphics.drawRect(-1,-1,2,2);
			square.graphics.endFill();
			square.x = mDrawArea_mc.mouseX;
			square.y = mDrawArea_mc.mouseY;
		}
		
		private function onMouseDown(e:MouseEvent):void
		{
			mSpacer_mc.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
			this.onMouseMove(null);
		}
		
		private function onMouseUp(e:MouseEvent):void
		{
			mSpacer_mc.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
		}
		
	}

}