show drawn rectangles

This commit is contained in:
Jörn-Michael Miehe 2023-01-17 14:26:39 +00:00
parent 9fa1498af3
commit 96de19fbbd
2 changed files with 25 additions and 6 deletions

View file

@ -12,12 +12,20 @@
>
<rect
v-if="preview_state.visible"
id="preview"
class="focus"
:x="preview_rectangle.left"
:y="preview_rectangle.top"
:width="preview_rectangle.width"
:height="preview_rectangle.height"
/>
<rect
v-for="rect in rectangles"
:key="rect.left"
:x="rect.left"
:y="rect.top"
:width="rect.width"
:height="rect.height"
/>
</svg>
</div>
</template>
@ -47,6 +55,8 @@ export default class CalendarImage extends Vue {
corner1: new Vector2D(),
corner2: new Vector2D(),
};
private readonly min_rect_area = 4;
private rectangles: Rectangle[] = [];
private on_pointerdown(event: MouseEvent) {
this.preview_state.visible = true;
@ -60,6 +70,9 @@ export default class CalendarImage extends Vue {
private on_pointerup() {
this.preview_state.visible = false;
if (this.preview_rectangle.area >= this.min_rect_area) {
this.rectangles.push(this.preview_rectangle);
}
}
private get preview_rectangle(): Rectangle {
@ -119,13 +132,15 @@ div#container {
width: 100%;
rect {
stroke-width: 1;
stroke-opacity: 0.9;
fill: lightgreen;
stroke: green;
fill-opacity: 0.2;
stroke-opacity: 0.9;
stroke-width: 1;
&#preview {
fill: white;
stroke: red;
&.focus {
fill: gold;
stroke: yellow;
}
}
}

View file

@ -56,6 +56,10 @@ export class Rectangle {
return this.size.y;
}
public get area(): number {
return this.width * this.height;
}
public normalize(): Rectangle {
let left = this.left;
let top = this.top;