public void Add(XnaDrawObject obj)
        {
            // insert to the top of z-order
            _graphicsList.Insert(0, obj);
            var create = new XnaCreateCommand(obj, _graphicsList);

            _undoRedo.AddCommand(create);
        }
        XnaDrawObject CreateGroup(SvgGroup svg)
        {
            XnaDrawObject o     = null;
            SvgElement    child = svg.getChild();

            if (child != null)
            {
                AddFromSvg(child);
            }
            return(o);
        }
        XnaDrawObject CreateXnaDrawObject(SvgElement svge)
        {
            XnaDrawObject o = null;

            switch (svge.getElementType())
            {
            case SvgElement._SvgElementType.typeLine:
                o = XnaDrawLine.Create((SvgLine )svge);
                break;

            case SvgElement._SvgElementType.typeRect:
                o = XnaDrawRectangle.Create((SvgRect )svge);
                break;

            case SvgElement._SvgElementType.typeEllipse:
                o = DrawEllipse.Create((SvgEllipse )svge);
                break;

            case SvgElement._SvgElementType.typePolyline:
                o = XnaDrawPolygon.Create((SvgPolyline )svge);
                break;

            case SvgElement._SvgElementType.typeImage:
                o = DrawImage.Create((SvgImage )svge);
                break;

            case SvgElement._SvgElementType.typeText:
                o = XnaDrawText.Create((SvgText )svge);
                break;

            case SvgElement._SvgElementType.typeGroup:
                o = CreateGroup((SvgGroup )svge);
                break;

            case SvgElement._SvgElementType.typePath:
                o = XnaDrawPath.Create((SvgPath)svge);
                break;

            case SvgElement._SvgElementType.typeDesc:
                Description = ((SvgDesc)svge).Value;
                break;

            default:
                break;
            }
            return(o);
        }
 // **************   Read from SVG
 public void AddFromSvg(SvgElement ele)
 {
     while (ele != null)
     {
         XnaDrawObject o = CreateXnaDrawObject(ele);
         if (o != null)
         {
             Add(o);
         }
         SvgElement child = ele.getChild();
         while (child != null)
         {
             AddFromSvg(child);
             child = child.getNext();
         }
         ele = ele.getNext();
     }
 }
        public void ResizeCommand(XnaDrawObject obj, Point old, Point newP, int handle)
        {
            var cmd = new ResizeCommand(obj, old, newP, handle);

            _undoRedo.AddCommand(cmd);
        }