More refactor

This commit is contained in:
Mark Tolmacs 2024-09-25 11:59:27 +02:00
parent 392dd5b0b8
commit b697f63cad
No known key found for this signature in database
18 changed files with 206 additions and 199 deletions

View file

@ -65,7 +65,7 @@ import {
} from "./heading";
import type { LocalPoint, Radians } from "../../math";
import {
lineSegment,
segment,
point,
pointRotateRads,
type GlobalPoint,
@ -1615,7 +1615,7 @@ const intersectElementWithLine = (
elementsMap: ElementsMap,
): GlobalPoint[] | undefined => {
if (isRectangularElement(element)) {
return segmentIntersectRectangleElement(element, lineSegment(a, b), gap);
return segmentIntersectRectangleElement(element, segment(a, b), gap);
}
const relateToCenter = relativizationToElementCenter(element, elementsMap);

View file

@ -21,10 +21,10 @@ import type { Bounds } from "./bounds";
import { getElementAbsoluteCoords } from "./bounds";
import { SIDE_RESIZING_THRESHOLD } from "../constants";
import { isLinearElement } from "./typeChecks";
import type { GlobalPoint, LineSegment, LocalPoint } from "../../math";
import type { GlobalPoint, Segment, LocalPoint } from "../../math";
import {
point,
pointOnLineSegment,
segmentIncludesPoint,
pointRotateRads,
type Radians,
} from "../../math";
@ -101,9 +101,9 @@ export const resizeTest = <Point extends GlobalPoint | LocalPoint>(
for (const [dir, side] of Object.entries(sides)) {
// test to see if x, y are on the line segment
if (
pointOnLineSegment(
segmentIncludesPoint(
point<Point>(x, y),
side as LineSegment<Point>,
side as Segment<Point>,
SPACING,
)
) {
@ -187,9 +187,9 @@ export const getTransformHandleTypeFromCoords = (
for (const [dir, side] of Object.entries(sides)) {
// test to see if x, y are on the line segment
if (
pointOnLineSegment(
segmentIncludesPoint(
scenePointer,
side as LineSegment<GlobalPoint>,
side as Segment<GlobalPoint>,
SPACING,
)
) {

View file

@ -33,10 +33,10 @@ import {
isLinearElement,
} from "./element/typeChecks";
import type { ReadonlySetLike } from "./utility-types";
import type { GlobalPoint, LineSegment } from "../math";
import type { GlobalPoint, Segment } from "../math";
import {
isPointWithinBounds,
lineSegment,
segment,
point,
pointRotateRads,
segmentsIntersectAt,
@ -82,7 +82,7 @@ export const bindElementsToFramesAfterDuplication = (
const getElementLineSegments = (
element: ExcalidrawElement,
elementsMap: ElementsMap,
): LineSegment<GlobalPoint>[] => {
): Segment<GlobalPoint>[] => {
const [x1, y1, x2, y2, cx, cy] = getElementAbsoluteCoords(
element,
elementsMap,
@ -91,13 +91,13 @@ const getElementLineSegments = (
const center: GlobalPoint = point(cx, cy);
if (isLinearElement(element) || isFreeDrawElement(element)) {
const segments: LineSegment<GlobalPoint>[] = [];
const segments: Segment<GlobalPoint>[] = [];
let i = 0;
while (i < element.points.length - 1) {
segments.push(
lineSegment(
segment(
pointRotateRads(
point(
element.points[i][0] + element.x,
@ -137,35 +137,35 @@ const getElementLineSegments = (
if (element.type === "diamond") {
return [
lineSegment(n, w),
lineSegment(n, e),
lineSegment(s, w),
lineSegment(s, e),
segment(n, w),
segment(n, e),
segment(s, w),
segment(s, e),
];
}
if (element.type === "ellipse") {
return [
lineSegment(n, w),
lineSegment(n, e),
lineSegment(s, w),
lineSegment(s, e),
lineSegment(n, w),
lineSegment(n, e),
lineSegment(s, w),
lineSegment(s, e),
segment(n, w),
segment(n, e),
segment(s, w),
segment(s, e),
segment(n, w),
segment(n, e),
segment(s, w),
segment(s, e),
];
}
return [
lineSegment(nw, ne),
lineSegment(sw, se),
lineSegment(nw, sw),
lineSegment(ne, se),
lineSegment(nw, e),
lineSegment(sw, e),
lineSegment(ne, w),
lineSegment(se, w),
segment(nw, ne),
segment(sw, se),
segment(nw, sw),
segment(ne, se),
segment(nw, e),
segment(sw, e),
segment(ne, w),
segment(se, w),
];
};

View file

@ -1,4 +1,3 @@
import React from "react";
import ReactDOM from "react-dom";
import {
fireEvent,
@ -27,8 +26,8 @@ import { KEYS } from "../keys";
import { getBoundTextElementPosition } from "../element/textElement";
import { createPasteEvent } from "../clipboard";
import { arrayToMap, cloneJSON } from "../utils";
import type { LocalPoint } from "../../math";
import { point, type Radians } from "../../math";
import type { LocalPoint, Radians } from "../../math";
import { point, radians } from "../../math";
const { h } = window;
const mouse = new Pointer("mouse");
@ -132,7 +131,7 @@ const createLinearElementWithCurveInsideMinMaxPoints = (
y: -2412.5069664197654,
width: 1750.4888916015625,
height: 410.51605224609375,
angle: 0 as Radians,
angle: radians(0),
strokeColor: "#000000",
backgroundColor: "#fa5252",
fillStyle: "hachure",

View file

@ -1,5 +1,5 @@
import type { LineSegment } from "../math";
import { isLineSegment, lineSegment, point, type GlobalPoint } from "../math";
import type { Segment } from "../math";
import { isSegment, segment, point, type GlobalPoint } from "../math";
import type { Bounds } from "./element/bounds";
import { isBounds } from "./element/typeChecks";
@ -15,20 +15,20 @@ declare global {
export type DebugElement = {
color: string;
data: LineSegment<GlobalPoint>;
data: Segment<GlobalPoint>;
permanent: boolean;
};
export const debugDrawLine = (
segment: LineSegment<GlobalPoint> | LineSegment<GlobalPoint>[],
segment: Segment<GlobalPoint> | Segment<GlobalPoint>[],
opts?: {
color?: string;
permanent?: boolean;
},
) => {
const segments = (
isLineSegment(segment) ? [segment] : segment
) as LineSegment<GlobalPoint>[];
isSegment(segment) ? [segment] : segment
) as Segment<GlobalPoint>[];
segments.forEach((data) =>
addToCurrentFrame({
@ -51,7 +51,7 @@ export const debugDrawPoint = (
const yOffset = opts?.fuzzy ? Math.random() * 3 : 0;
debugDrawLine(
lineSegment(
segment(
point<GlobalPoint>(p[0] + xOffset - 10, p[1] + yOffset - 10),
point<GlobalPoint>(p[0] + xOffset + 10, p[1] + yOffset + 10),
),
@ -61,7 +61,7 @@ export const debugDrawPoint = (
},
);
debugDrawLine(
lineSegment(
segment(
point<GlobalPoint>(p[0] + xOffset - 10, p[1] + yOffset + 10),
point<GlobalPoint>(p[0] + xOffset + 10, p[1] + yOffset - 10),
),
@ -82,19 +82,19 @@ export const debugDrawBounds = (
(isBounds(box) ? [box] : box).forEach((bbox) =>
debugDrawLine(
[
lineSegment(
segment(
point<GlobalPoint>(bbox[0], bbox[1]),
point<GlobalPoint>(bbox[2], bbox[1]),
),
lineSegment(
segment(
point<GlobalPoint>(bbox[2], bbox[1]),
point<GlobalPoint>(bbox[2], bbox[3]),
),
lineSegment(
segment(
point<GlobalPoint>(bbox[2], bbox[3]),
point<GlobalPoint>(bbox[0], bbox[3]),
),
lineSegment(
segment(
point<GlobalPoint>(bbox[0], bbox[3]),
point<GlobalPoint>(bbox[0], bbox[1]),
),