//create a new CurAddTo (even though their already might be one) //(needed for edge tool) protected virtual bool AddNewCurAddTo() { // find tikzpicture Tikz_Picture tpict = overlay.ParseTree.GetTikzPicture(); if (tpict == null) return false; Parser.Tikz_Path tp = new Parser.Tikz_Path(); tp.starttag = @"\draw "; tp.endtag = ";"; if (overlay.EdgeStyle != "") { Parser.Tikz_Options topt = new Parser.Tikz_Options(); topt.starttag = "["; topt.endtag = "]"; Parser.Tikz_Option to = new Parser.Tikz_Option(); to.type = Parser.Tikz_OptionType.key; to.key = overlay.EdgeStyle; topt.AddOption(to); tp.AddChild(topt); tp.options = topt; } if (overlay.CurEditing != null) { overlay.CurEditing.tikzitem.AddChild(tp); overlay.CurEditing.tikzitem.AddChild(new Parser.Tikz_Something("\r\n")); } else { tpict.AddChild(tp); tpict.AddChild(new Parser.Tikz_Something("\r\n")); } curAddTo = tp; return true; }
public override void OnLeftMouseButtonDown(OverlayShape item, Point p, TEMouseArgs e) { if (!EnsureParseTreeExists()) return; overlay.BeginUpdate(); overlay.SetCorrectRaster(overlay.CurEditing, true); //Point p = new Point(e.GetPosition(canvas1).X, Height - e.GetPosition(canvas1).Y); p = overlay.Rasterizer.RasterizePixelToTikz(p); if (ContinueWithBigImage(p) == false) return; // find next tikzpicture and add Parser.Tikz_Picture tpict = overlay.ParseTree.GetTikzPicture(); if (tpict != null) { Parser.Tikz_Node tn = new Parser.Tikz_Node(); tn.label = ""; tn.coord = new Parser.Tikz_Coord(); if (overlay.NodeStyle != "") tn.options = "[" + overlay.NodeStyle + "]"; Parser.Tikz_Path tp = new Parser.Tikz_Path(); tp.starttag = @"\node "; tp.endtag = ";"; tp.AddChild(tn); if (overlay.CurEditing != null) { overlay.CurEditing.tikzitem.AddChild(tp); overlay.CurEditing.tikzitem.AddChild(new Parser.Tikz_Something("\r\n")); } else { tpict.AddChild(tp); tpict.AddChild(new Parser.Tikz_Something("\r\n")); } // do it here since the coordinate calculation needs the parents' coord. transform tn.SetAbsPos(new Point(p.X, p.Y)); //hack //tn.UpdateText(); tp.UpdateText(); //tpict.UpdateText(); //RedrawObjects(); overlay.AddToDisplayTree(tp); } overlay.EndUpdate(); }