private List <PolyLog> GetIntersectedPoly(PolyLog parentOfParentLog, PolyLog parentLog, List <PolyLog> log) { List <PolyLog> res = new List <PolyLog>(); foreach (PolyLog polyLog in log) { if (parentLog != polyLog) { //EntraDrawer.DrawIntoFileTesting(polyLog.PolysUnion); //EntraDrawer.DrawIntoFileTesting(parentLog.PolysUnion); //EntraDrawer.DrawIntoFileTesting(parentOfParentLog.PolysUnion); if (polyLog.IsOperation(parentOfParentLog, parentLog, ClipType.ctIntersection)) //if (EntraSolver.IsPolyOperation(parentLog.Poly, polyLog.Poly, ClipType.ctIntersection)) { if (polyLog.Comp is RopeEntityPoly) { if (res.Count == 0) { res.Insert(0, polyLog); } else { res.Insert(res.Count - 1, polyLog); } } else { res.Insert(0, polyLog); } } } } return(res); }
public ErrorsViewer(PolyLog log) { InitializeComponent(); //dark skin if (MainWindow.CurrentSkin == SkinType.Dark) { SharedResourceDictionary.SharedDictionaries.Clear(); Resources.MergedDictionaries.Add(ResourceHelper.GetSkin(SkinType.Dark)); Resources.MergedDictionaries.Add(new Win.ResourceDictionary { Source = new Uri("pack://application:,,,/HandyControl;component/Themes/Theme.xaml") }); this?.OnApplyTemplate(); } foreach (LexerError lexErr in log.LexerLog.Errors) { ErrsBox.Document = new Win.Documents.FlowDocument(new Win.Documents.Paragraph( new Win.Documents.Run("[Lexer:Error]" + lexErr.Message))); } foreach (ParserError parErr in log.ParserLog.Errors) { ErrsBox.Document = new Win.Documents.FlowDocument(new Win.Documents.Paragraph( new Win.Documents.Run("[Parser:Error]" + parErr.Message + " (In " + parErr.ThrowedIn.ToString() + ")"))); } }
private void ReAddFrogToAllPaths(PolyLog frogPolyLog, ref List <List <PolyLog> > allPaths) { for (int i = 0; i < allPaths.Count; i++) { var path = allPaths[i]; path.Add(frogPolyLog); } }
public Bitmap GetPathBitmap(int indexPath, bool withInputImage) { FrogEntityPoly frog = new FrogEntityPoly(this._entra, this._entra.EngineState.FrogRB); PolyLog frogPolyLog = new PolyLog(frog, frog.GetDefPoly(), null); var pathPoints = BuildPath(frogPolyLog, AllPaths[indexPath]); var form = new PathForm(pathPoints, withInputImage); return(form.GetPathBitmap()); }
private int RopeLastSorter(PolyLog x, PolyLog y) { if (x.Comp is RopeEntityPoly || y.Comp is RopeEntityPoly) { return(-1); } else { return(1); } }
public void DrawShortestPath(int counter) { String dirName = "PolysTesting"; FrogEntityPoly frog = new FrogEntityPoly(this._entra, this._entra.EngineState.FrogRB); PolyLog frogPolyLog = new PolyLog(frog, frog.GetDefPoly(), null); var shortestP = EntraPlusUsageManager.GetShortestPath(this.AllPaths)[0]; var pathPoints = BuildPath(frogPolyLog, shortestP); var form = new PathForm(pathPoints, true); form.DrawPathIntoOutput(dirName + @"\path " + counter + ".jpg"); }
public void DrawPaths() { String dirName = "PolysTesting"; FrogEntityPoly frog = new FrogEntityPoly(this._entra, this._entra.EngineState.FrogRB); PolyLog frogPolyLog = new PolyLog(frog, frog.GetDefPoly(), null); for (int i = 0; i < AllPaths.Count; i++) { var pathPoints = BuildPath(frogPolyLog, AllPaths[i]); var form = new PathForm(pathPoints, true); form.DrawPathIntoOutput(dirName + @"\path " + i + ".jpg"); } }
private void InitializeFrogPoly() { _frogPolyLog = new PolyLog(_frog); foreach (PolyLog polyLog in _log) { foreach (APPair apPair in polyLog.ApPairs) { if (EntraSolver.IsPolyOperation(_frog.GetDefPoly(), apPair.Poly, ClipType.ctIntersection)) { _frogPolyLog.AddPoly(_frog.GetDefPoly(), polyLog.Comp); } } } }
private static List <Point> BuildPath(PolyLog frogPolyLog, List <PolyLog> path) { //path.Insert(0, frogPolyLog); List <Point> pathPoints = new List <Point>(); for (int i = 0; i < path.Count; i++) { PolyLog entity = path[i]; if (entity.Comp is RopeEntityPoly) { pathPoints.Add(VectorToPoint(StaticData.EngineManager.CookieRB.PositionXNACenter2D)); } else { pathPoints.Add(VectorToPoint(entity.Comp.PositionXNACenter2D)); } } return(pathPoints); }
public PolyNode(PolyLog polyLog, PolyNode parent) { PolyLog = polyLog; Parent = parent; Childs = new List <PolyNode>(); }