Removed pen specific behavior

This commit is contained in:
Lukasz Baldyga committed 2020-10-13 17:20:29 +01:00
1 parent 8acf87b001
commit 456aec28b7
2 files changed
+26 -44

No files matched your search

@@ -130,7 +130,6 @@ namespace Advanced_Software_Engineering
protected Drawer drawer;
protected Point[] vertices;
private List<Verb> lineVerbs;
private bool finishDown;
Shape(Drawer drawer, Point[] vertices)
@@ -146,17 +145,7 @@ namespace Advanced_Software_Engineering
throw new Exception("Cannot create shape with only two verticies. Are you thinking of 'drawto'/'moveto'/'line'?");
}
finishDown = drawer.IsPenDown();
//Move pen to every vertex.
//Using MoveTo rather than LineTo because LineTo would be slower if done multiple times (pen up pen down over and over if the pen wasn't down initially)
for (int i = 1; i < vertices.Length; i++)
{
lineVerbs.Add(new DrawTo(drawer, vertices[i]));
}
//Join first and last line
lineVerbs.Add(new DrawTo(drawer, vertices[0]));
//TODO
}
@@ -185,23 +174,6 @@ namespace Advanced_Software_Engineering
}
}
class PenControl : Verb
{
bool penStatus;
Drawer drawer;
public PenControl(Drawer drawer, bool down)
{
penStatus = down;
this.drawer = drawer;
}
public void ExecuteVerb()
{
drawer.SetPen(penStatus);
}
}
abstract class Value
{
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Runtime.Remoting.Messaging;
using System.Text;
@@ -18,7 +19,7 @@ namespace Advanced_Software_Engineering
public void DrawAllCommands()
{
foreach(Verb verb in this.commands)
foreach (Verb verb in this.commands)
{
verb.ExecuteVerb();
}
@@ -50,7 +51,7 @@ namespace Advanced_Software_Engineering
//isolate commands
string[] commands = rawCommands.Split(Environment.NewLine.ToCharArray());
foreach(string rawCommand in commands)
foreach (string rawCommand in commands)
{
//handle errors later
AddCommand(VerbFactory.MakeVerb(drawer, rawCommand));
@@ -62,7 +63,7 @@ namespace Advanced_Software_Engineering
int start = commands.Count;
ProcessCommands(rawCommands);
for(; start < commands.Count; start++)
for (; start < commands.Count; start++)
{
commands[start].ExecuteVerb();
}
@@ -72,31 +73,35 @@ namespace Advanced_Software_Engineering
class Drawer
{
protected static Color defaultPenColor = Color.Black;
protected static float defaultPenWidth = 1f;
protected static Color defaultColor = Color.Black;
protected static float defaultWidth = 1f;
protected bool fill = false;
protected Color fillColor = Color.Black;
Pen pen = new Pen(defaultPenColor, defaultPenWidth);
bool penDown = true;
Point penPosition;
Graphics graphics;
protected Brush brush;
protected Pen pen;
protected Point penPosition;
protected Graphics graphics;
public Drawer(Graphics graphics)
{
this.graphics = graphics;
pen = new Pen(defaultColor, defaultWidth);
brush = new SolidBrush(defaultColor);
}
public void MovePen(Point point)
{
if(penDown) graphics.DrawLine(pen, penPosition, point);
this.penPosition = point;
}
public bool IsPenDown() => penDown;
public void PenUp() => penDown = false;
public void PenDown() => penDown = true;
public void SetPen(bool down) => penDown = down;
public bool GetFill() => fill;
public void EnableFill() => fill = false;
public void DisableFill() => fill = true;
public void SetFill(bool down) => fill = down;
public void DrawLine(Point point)
{
@@ -104,6 +109,11 @@ namespace Advanced_Software_Engineering
penPosition = point;
}
public void DrawPoints(GraphicsPath path)
{
graphics.FillPath(brush, path);
}
}
}