void ParseAndRenderSvgFile(string svgFile) { var docBuilder = new VgDocBuilder(); var svgParser = new SvgParser(docBuilder); //TODO: ask file content from host, string svgContent = System.IO.File.ReadAllText(svgFile); WebLexer.TextSnapshot textSnapshot = new WebLexer.TextSnapshot(svgContent); svgParser.ParseDocument(textSnapshot); // #if DEBUG System.Diagnostics.Debug.WriteLine(svgFile); #endif var vgDocBuilder = new VgVisualDocBuilder(); VgVisualElement vgVisElem = vgDocBuilder.CreateVgVisualDoc(docBuilder.ResultDocument, _vgDocHost).VgRootElem; var uiSprite = new UISprite(10, 10); var evListener = new GeneralEventListener(); uiSprite.AttachExternalEventListener(evListener); evListener.MouseDown += (e) => { //hit on svg color- area VgHitInfo hitInfo = uiSprite.FindRenderElementAtPos(e.X, e.Y, false); #if DEBUG if (hitInfo.hitElem != null) { SvgElement domElem = hitInfo.hitElem.DomElem; if (domElem != null && domElem.ElemId != null) { Console.WriteLine(domElem.ElemId); } } #endif }; uiSprite.LoadVg(vgVisElem); _backBoard.ClearChildren(); _backBoard.AddChild(uiSprite); }
protected override void OnStartDemo(SampleViewport viewport) { PaintLab.Svg.SvgParser parser = new SvgParser(); _backBoard = new BackDrawBoardUI(400, 400); _backBoard.BackColor = Color.White; viewport.AddContent(_backBoard); box1 = new LayoutFarm.CustomWidgets.SimpleBox(50, 50); box1.BackColor = Color.Red; box1.SetLocation(10, 10); //box1.dbugTag = 1; SetupActiveBoxProperties(box1); _backBoard.AddChild(box1); //---------------------- //load lion svg string file = @"d:\\WImageTest\\lion.svg"; string svgContent = System.IO.File.ReadAllText(file); WebLexer.TextSnapshot textSnapshot = new WebLexer.TextSnapshot(svgContent); parser.ParseDocument(textSnapshot); // SvgRenderVx svgRenderVx = parser.GetResultAsRenderVx(); var uiSprite = new UISprite(10, 10); uiSprite.LoadSvg(svgRenderVx); _backBoard.AddChild(uiSprite); //-------- rectBoxController.Init(); //------------ viewport.AddContent(rectBoxController); //foreach (var ui in rectBoxController.GetControllerIter()) //{ // viewport.AddContent(ui); //} //-------- var evListener = new GeneralEventListener(); uiSprite.AttachExternalEventListener(evListener); evListener.MouseDown += (e) => { //e.MouseCursorStyle = MouseCursorStyle.Pointer; ////-------------------------------------------- //e.SetMouseCapture(rectBoxController.ControllerBoxMain); rectBoxController.UpdateControllerBoxes(box1); rectBoxController.Focus(); //System.Console.WriteLine("click :" + (count++)); }; rectBoxController.ControllerBoxMain.KeyDown += (s1, e1) => { if (e1.Ctrl && e1.KeyCode == UIKeys.X) { //test copy back image buffer from current rect area #if DEBUG //test save some area int w = rectBoxController.ControllerBoxMain.Width; int h = rectBoxController.ControllerBoxMain.Height; using (DrawBoard gdiDrawBoard = DrawBoardCreator.CreateNewDrawBoard(1, w, h)) { gdiDrawBoard.OffsetCanvasOrigin(rectBoxController.ControllerBoxMain.Left, rectBoxController.ControllerBoxMain.Top); _backBoard.CurrentPrimaryRenderElement.CustomDrawToThisCanvas(gdiDrawBoard, new Rectangle(0, 0, w, h)); var img2 = new ActualImage(w, h); //copy content from drawboard to target image and save gdiDrawBoard.RenderTo(img2, 0, 0, w, h); img2.dbugSaveToPngFile("d:\\WImageTest\\ddd001.png"); } #endif } }; }
protected override void OnStart(AppHost host) { _vgVisualDocHost = new VgVisualDocHost(); _vgVisualDocHost.SetInvalidateDelegate(vgElem => { //invalidate graphic here }); _backBoard = new BackDrawBoardUI(800, 600); _backBoard.BackColor = Color.White; host.AddChild(_backBoard); //load lion svg string svgfile = "../Test8_HtmlRenderer.Demo/Samples/Svg/others/tiger.svg"; //string svgfile = "1f30b.svg"; //string svgfile = "../Data/Svg/twemoji/1f30b.svg"; //string svgfile = "../Data/1f30b.svg"; //string svgfile = "../Data/Svg/twemoji/1f370.svg"; VgVisualDoc vgDocRoot = ReadSvgFile(svgfile); VgVisualElement vgVisElem = vgDocRoot.VgRootElem; var uiSprite = new UISprite(10, 10); uiSprite.LoadVg(vgVisElem); _backBoard.AddChild(uiSprite); // _redBox = new LayoutFarm.CustomWidgets.Box(50, 50); //visual rect box _redBox.BackColor = Color.Red; _redBox.SetLocation(10, 10); //box1.dbugTag = 1; SetupActiveBoxProperties(_redBox); _backBoard.AddChild(_redBox); //---------------------- //-------- _rectBoxController = new CustomWidgets.RectBoxController(); _rectBoxController.Init(); _backBoard.AddChild(_rectBoxController); //foreach (var ui in rectBoxController.GetControllerIter()) //{ // viewport.AddContent(ui); //} //-------- var svgEvListener = new GeneralEventListener(); //uiSprite.AttachExternalEventListener(svgEvListener); svgEvListener.MouseDown += (e) => { //e.MouseCursorStyle = MouseCursorStyle.Pointer; ////-------------------------------------------- //e.SetMouseCapture(rectBoxController.ControllerBoxMain); _rectBoxController.UpdateControllerBoxes(_redBox); _rectBoxController.Focus(); //System.Console.WriteLine("click :" + (count++)); }; _rectBoxController.ControllerBoxMain.KeyDown += (s1, e1) => { if (e1.KeyCode == UIKeys.C && e1.Ctrl) { //test copy back image buffer from current rect area #if DEBUG //int left = rectBoxController.ControllerBoxMain.Left; //int top = rectBoxController.ControllerBoxMain.Top; //int width = rectBoxController.ControllerBoxMain.Width; //int height = rectBoxController.ControllerBoxMain.Height; //using (DrawBoard drawBoard = DrawBoardCreator.CreateNewDrawBoard(1, width, height)) //{ // //create new draw board // drawBoard.OffsetCanvasOrigin(left, top); // _backBoard.CurrentPrimaryRenderElement.CustomDrawToThisCanvas(drawBoard, new Rectangle(0, 0, width, height)); // using (var img2 = new PixelFarm.CpuBlit.ActualBitmap(width, height)) // { // //copy content from drawboard to target image and save // drawBoard.RenderTo(img2, 0, 0, width, height); // PixelFarm.CpuBlit.Imaging.PngImageWriter.SaveImgBufferToPngFile( // PixelFarm.CpuBlit.ActualBitmap.GetBufferPtr(img2), // img2.Stride, // img2.Width, // img2.Height, // "d:\\WImageTest\\tiger.png"); // } // //copy content from drawboard to target image and save //} #endif } }; }