|
|
cfceb0 |
using System;
|
|
|
cfceb0 |
using System.Collections.Generic;
|
|
|
cfceb0 |
using System.Linq;
|
|
|
cfceb0 |
|
|
|
cfceb0 |
namespace Assistance {
|
|
|
cfceb0 |
public class Workarea {
|
|
|
726e8a |
public readonly Document document;
|
|
|
b9e5e0 |
public readonly InputManager inputManager;
|
|
|
b9e5e0 |
|
|
|
b9e5e0 |
private readonly InputModifierTangents modifierTangents;
|
|
|
ed66f8 |
private readonly InputModifierAssistants modifierAssistants;
|
|
|
ed66f8 |
private readonly InputModifierSegmentation modifierSegmentation;
|
|
|
cfceb0 |
|
|
|
726e8a |
public Workarea() {
|
|
|
726e8a |
document = new Document(this);
|
|
|
b9e5e0 |
inputManager = new InputManager(this);
|
|
|
b9e5e0 |
|
|
|
b9e5e0 |
modifierTangents = new InputModifierTangents();
|
|
|
ed66f8 |
modifierAssistants = new InputModifierAssistants(this);
|
|
|
ed66f8 |
modifierSegmentation = new InputModifierSegmentation();
|
|
|
b9e5e0 |
}
|
|
|
b9e5e0 |
|
|
|
b9e5e0 |
public Tool getTool()
|
|
|
b9e5e0 |
{ return inputManager.getTool(); }
|
|
|
b9e5e0 |
|
|
|
b9e5e0 |
public void setTool(Tool tool, bool force = false) {
|
|
|
b9e5e0 |
if (getTool() != tool || force) {
|
|
|
b9e5e0 |
inputManager.deactivate();
|
|
|
b9e5e0 |
inputManager.clearModifiers();
|
|
|
b9e5e0 |
if (tool != null) {
|
|
|
b9e5e0 |
Tool.ModifierTypes types = tool.getAvailableModifierTypes();
|
|
|
ed66f8 |
if ((Tool.ModifierTypes.Tangents & types) != 0)
|
|
|
b9e5e0 |
inputManager.addModifier(modifierTangents);
|
|
|
ed66f8 |
if ((Tool.ModifierTypes.Guideline & types) != 0)
|
|
|
ed66f8 |
inputManager.addModifier(modifierAssistants);
|
|
|
b9e5e0 |
if ((Tool.ModifierTypes.Multiline & types) != 0)
|
|
|
b9e5e0 |
foreach(Modifier modifier in document.modifiers)
|
|
|
b9e5e0 |
inputManager.addModifier(modifier);
|
|
|
ed66f8 |
if ((Tool.ModifierTypes.Segmentation & types) != 0)
|
|
|
ed66f8 |
inputManager.addModifier(modifierSegmentation);
|
|
|
b9e5e0 |
}
|
|
|
b9e5e0 |
inputManager.setTool(tool);
|
|
|
b9e5e0 |
inputManager.activate();
|
|
|
b9e5e0 |
}
|
|
|
726e8a |
}
|
|
|
0f2bf8 |
|
|
|
0f2bf8 |
public void updateModifiers()
|
|
|
0f2bf8 |
{ setTool(getTool(), true); }
|
|
|
726e8a |
|
|
|
cfceb0 |
public ActivePoint findPoint(Point position) {
|
|
|
726e8a |
foreach(ActivePoint point in document.points.Reverse<activepoint>())</activepoint>
|
|
|
cfceb0 |
if (point.isInside(position))
|
|
|
cfceb0 |
return point;
|
|
|
cfceb0 |
return null;
|
|
|
cfceb0 |
}
|
|
|
cfceb0 |
|
|
|
cfceb0 |
public void getGuidelines(List<guideline> outGuidelines, Point target) {</guideline>
|
|
|
726e8a |
foreach(Assistant assistant in document.assistants)
|
|
|
cfceb0 |
assistant.getGuidelines(outGuidelines, target);
|
|
|
cfceb0 |
}
|
|
|
cfceb0 |
|
|
|
0f2bf8 |
public void draw(Cairo.Context context, List<point> hovers, ActivePoint activePoint) {</point>
|
|
|
cfceb0 |
// canvas
|
|
|
b82ef4 |
document.canvas.draw(context);
|
|
|
cfceb0 |
|
|
|
b9e5e0 |
// input manager
|
|
|
0f2bf8 |
inputManager.draw(context, hovers);
|
|
|
cfceb0 |
|
|
|
72b17c |
// modifiers
|
|
|
726e8a |
foreach(Modifier modifier in document.modifiers)
|
|
|
b82ef4 |
modifier.draw(context);
|
|
|
72b17c |
|
|
|
cfceb0 |
// assistants
|
|
|
726e8a |
foreach(Assistant assistant in document.assistants)
|
|
|
b82ef4 |
assistant.draw(context);
|
|
|
cfceb0 |
|
|
|
72b17c |
// active points
|
|
|
726e8a |
foreach(ActivePoint point in document.points)
|
|
|
b82ef4 |
point.draw(context, activePoint == point);
|
|
|
cfceb0 |
}
|
|
|
cfceb0 |
}
|
|
|
cfceb0 |
}
|
|
|
cfceb0 |
|