package {
    import com.adobe.viewsource.ViewSource;
    import com.cb.app.view.PaintCanvas;
    import com.cb.utils.FrameRateCounter;
    import com.cb.utils.brush.PaintBrush;
    
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.MouseEvent;

    [SWF(pageTitle="SimplePaint", backgroundColor="#FFFFFF", frameRate="30", width="400", height="400")]
    public class SimplePaint extends Sprite
    {
        public static const CANVAS_HEIGHT:uint = 400;
        public static const CANVAS_WIDTH:uint = 400;

        private var _canvas:PaintCanvas;
        private var _brush:PaintBrush;
        
        public function SimplePaint()
        {
            ViewSource.addMenuItem(this, "http://www.blackcj.com/blog/wp-content/swfs/SimplePaint/good/srcview/index.html");  // Used to allow ViewSource
            
            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;        
            
            _canvas = new PaintCanvas();
            _brush = new PaintBrush();
            
            this.addChild(_canvas);    
            this.addChild(_brush);
            
            stage.addEventListener(MouseEvent.MOUSE_DOWN, brushDown, false, 0, true);
            stage.addEventListener(MouseEvent.MOUSE_UP, brushUp, false, 0, true);
            
            var framerateCounter:FrameRateCounter = new FrameRateCounter();
            addChild(framerateCounter);
        }
        
        private function brushDown(event:MouseEvent):void
        {
            _brush.beginPaint();
        }
        
        private function brushUp(event:MouseEvent):void
        {
            _canvas.addStroke(_brush.stroke);
            _brush.endPaint();
        }
    }
}