|
@@ -0,0 +1,70 @@
|
|
|
+import { Drawer } from "../../../core/drawers/drawer";
|
|
|
+import { CircumferenceModel } from "../models/circumference-model";
|
|
|
+import { PointDrawer } from "../../point-component/drawers/point-drawer";
|
|
|
+import { DrawerAggregator } from "../../../core/drawers/drawer-aggregator";
|
|
|
+import { ELEMENTS_CLASS } from "../../../core/enums/elements-class-enum";
|
|
|
+
|
|
|
+export class CircumferenceDrawer extends Drawer {
|
|
|
+ constructor() {
|
|
|
+ super();
|
|
|
+ this.states = ["center", "radius"];
|
|
|
+ this.state = undefined;
|
|
|
+ this.circumference = undefined;
|
|
|
+ this.pointDrawer = new PointDrawer();
|
|
|
+ this.center;
|
|
|
+ this.radius;
|
|
|
+ this.centerAggregator;
|
|
|
+ this.konvaObject;
|
|
|
+ }
|
|
|
+
|
|
|
+ draw(e) {
|
|
|
+ if (this.state == undefined) {
|
|
|
+ this.state = this.states[0];
|
|
|
+ this.setStatus("Selecione o centro da Circunferência");
|
|
|
+ } else if (this.state == this.states[0]) {
|
|
|
+ this.centerAggregator = this.pointDrawer.drawPoint();
|
|
|
+ this.center = this.centerAggregator.genericObject;
|
|
|
+ this.state = this.states[1];
|
|
|
+ this.setStatus("Selecione o raio da Circunferência");
|
|
|
+ } else if (this.state == this.states[1]) {
|
|
|
+ this.radiusAggregator = this.pointDrawer.drawPoint();
|
|
|
+ this.radius = this.radiusAggregator.genericObject;
|
|
|
+ this.circumference = new CircumferenceModel(this.center, this.radius)
|
|
|
+ this.konvaObject = this.drawcircumference(this.circumference);
|
|
|
+ const aggregator = new DrawerAggregator(
|
|
|
+ this,
|
|
|
+ this.circumference,
|
|
|
+ this.konvaObject,
|
|
|
+ ELEMENTS_CLASS.CIRCUMFERENCE
|
|
|
+ );
|
|
|
+ super.addAggregator(aggregator);
|
|
|
+ this.centerAggregator.addAggregator(aggregator);
|
|
|
+ this.radiusAggregator.addAggregator(aggregator);
|
|
|
+ Drawer.drawObject(this.konvaObject);
|
|
|
+ this.konvaObject.zIndex(0);
|
|
|
+ super.batchDraw();
|
|
|
+ this.clear();
|
|
|
+ this.setStatus("");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ drawcircumference(circumference) {
|
|
|
+ console.info(circumference.getRadius());
|
|
|
+ const circle = new Konva.Circle({
|
|
|
+ x: circumference.center.posX,
|
|
|
+ y: circumference.center.posY,
|
|
|
+ radius: circumference.getRadius(),
|
|
|
+ fill: "transparent",
|
|
|
+ stroke: "grey",
|
|
|
+ strokeWidth: 2,
|
|
|
+ strokeScaleEnabled: false,
|
|
|
+ transformEnabled: false,
|
|
|
+ draggable: false,
|
|
|
+ selectable: false,
|
|
|
+ index: 0,
|
|
|
+ class: ELEMENTS_CLASS.CIRCUMFERENCE,
|
|
|
+ connections: [],
|
|
|
+ });
|
|
|
+ return circle;
|
|
|
+
|
|
|
+ }
|
|
|
+}
|