private void DrawSVG(TextWriter tw, Puzzle puzzle, Vector2 size) { WriteHeader(tw); foreach (var tile in puzzle.ForEachTile()) { var r = PlotTransform.Translate(tile); // if (tile.Cell == puzzle.Definition.Void) // { // tw.WriteLine(new RectTag( r).Style(new StyleTag().Fill("black"))); // } if (tile.Cell == puzzle.Definition.Wall) { tw.WriteLine(new ImageTag(r, GetResource("wall.svg"))); } if (tile.Cell.IsFloor) { tw.WriteLine(new ImageTag(r, GetResource("floor.svg"))); } if (tile.Cell.IsGoal) { tw.WriteLine(new ImageTag(r, GetResource("goal.svg"))); } if (tile.Cell.IsCrate && CrateSvg != null) { tw.WriteLine(new ImageTag(r, GetResource(CrateSvg))); } if (tile.Cell.IsPlayer && PlayerSvg != null) { tw.WriteLine(new ImageTag(r, GetResource(PlayerSvg))); } if (GetOverlay != null) { var s = GetOverlay(tile, r); if (s != null) { tw.WriteLine(s); } } } WriteFooter(tw); }
/// <summary> /// Draw cross on plot. /// </summary> /// <param name="graphics"> /// Plot drawing surface. /// </param> /// <param name="data"> /// Data point to transform and draw. /// </param> /// <param name="plotTransform"> /// Transformation between data coordinates and image coordinates on plot. /// </param> public void DrawPoint(Graphics graphics, Vector2D data, PlotTransform plotTransform) { Point center = plotTransform(data); graphics.DrawLine(_pen, center.X - _size, center.Y, center.X + _size, center.Y); graphics.DrawLine(_pen, center.X, center.Y - _size, center.X, center.Y + _size); }